安卓中关于Handler机制的浅谈
发布日期:2021-06-29 04:56:04
浏览次数:4
分类:技术文章
本文共 2307 字,大约阅读时间需要 7 分钟。
package com.example.fafa.justabouthandler;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends AppCompatActivity implements Handler.Callback{ private static final int UPDATE_TEXT = 100; private TextView mTetx; private Button mChangeBt; private Handler handler=new Handler(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mTetx = (TextView) findViewById(R.id.my_text); mChangeBt = (Button) findViewById(R.id.change); mChangeBt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { // 1 mTetx.setText("bye,world"); Message message= new Message(); message.what=UPDATE_TEXT; handler.sendMessageDelayed(message,5000); // handler.sendEmptyMessageDelayed(UPDATE_TEXT,5000); //这个是方法二只需要一句代码简单些 /*当你点进sendEmptyMessageDelayed的时候你会发现 public final boolean sendEmptyMessageDelayed(int what, long delayMillis) { Message msg = Message.obtain(); msg.what = what; return sendMessageDelayed(msg, delayMillis); } ,其实这两个方法是一样一样的,一个传Message类型的msg,一个传int类型的what,传what的,最终会转为msg。 */ } }).start(); } }); } @Override public boolean handleMessage(Message msg) { switch (msg.what) { case UPDATE_TEXT: mTetx.setText("bye,world"); break; } return false; }}
在上面的代码中布局中就只有一个TextView和一个Button控件 给按钮设置一个监听点击的时候开一个线
程,因为安卓是线程不安全的如果在子线程中直接像我的注释1一样直接更新UI那么程序就会crash掉,这
时候就应该像代码写的一样直接利用handler来发送消息,handlerMessage是在主线程中运行的就会接收
此消息然后就能更新UI了
转载地址:https://blog.csdn.net/zhang_linhua/article/details/74171975 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月10日 16时20分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Spring Boot整合Web开发之如何集成JSP
2021-07-02
全局异常处理之自定义全局错误页面、404及500错误页面
2021-07-02
全局异常处理之@ControllerAdvice+@ExceptionHandler
2021-07-02
全局异常处理之SimpleMappingExceptionResolver
2021-07-02
全局异常处理之如何使用HandlerExceptionResolver接口
2021-07-02
【Neuralink 与大脑的神奇未来】Part 2:大脑
2021-07-02
【Neuralink 与大脑的神奇未来】Part 3:脑机接口
2021-07-02
【Neuralink 与大脑的神奇未来】Part 4:Neuralink 的挑战
2021-07-02
【Neuralink 与大脑的神奇未来】Part 5:巫师时代
2021-07-02
【Neuralink与大脑的神奇未来】Part 6:大融合
2021-07-02
人工智能革命(上):通往超级智能之路
2021-07-02
人工智能革命(下):永生还是毁灭
2021-07-02
解密小米生态链:从构建到定义产品
2021-07-02
张一鸣的流量生意
2021-07-02
重新定义马桶
2021-07-02
从移动互联网困局漫谈人工智能的未来
2021-07-02
如何设计一款让用户“上瘾”的产品?
2021-07-02
墙裂推荐几款桌面应用
2021-07-02
如何避免掉进心理陷阱?
2021-07-02