Handler
来源:互联网 发布:淘宝女装哪家好 编辑:程序博客网 时间:2024/06/07 22:26
1. Message
消息
2. Message Queue
消息队列,用来存放通过Handler发送的消息,按照先进先出执行。
3. Handler
Handler是Message的主要处理者,将Message添加到消息队列中以及对消息队列中的Message进行处理(发送和处理消息)。
4. Looper
循环取出Message Queue里面的Message,并对相应的Handler进行处理(主线程创建的时候,Looper就被创建了)。
注意:安卓中的UI更新只能在主线程中操作
handler机制:
子线程不能直接更新UI,拿到主线程handler对象,发送消息,发送消息后,主线程进入messageQueue消息队列里面,由lopper循环从消息队列取消息,拿给handler,handler通过handlerMassage处理消息
Handler的使用步骤:
1.在主线程下创建Handler
2.子线程利用Handler对象发送消息
3.处理消息,在Handler对象中重写handlerMessage方法
下面是具体代码实现:
推荐使用这个:
public class MainActivity extends AppCompatActivity { Button but; Message message; Handler handler = new Handler() {//Handler导包时注意是 os包 @Override public void handleMessage(Message msg) {//重写handleMessage super.handleMessage(msg); if (msg.what == 1) {//判断what和传递的值是否一样 int i= (int) msg.obj; but.setText(i+""); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); but = (Button) findViewById(R.id.but); new Thread() { @Override public void run() { super.run(); for (int i = 3; i > 0; i--) { try { sleep(1000); /**传递信息*/ message = new Message(); message.what = 1; message.obj = i; handler.sendMessage(message); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); }}
当然Handler还有其他的方法实现:
1.runOnUiThread()
runOnUiThread(new Runnable() { @Override public void run() { but.setText("123456"); } });
2.new Handler().postDelayed()
new Handler().postDelayed(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,"",Toast.LENGTH_SHORT).show(); } },3000);
0 0
- Handler
- Handler
- Handler
- handler
- handler
- Handler
- Handler
- Handler
- Handler
- Handler
- Handler
- handler
- Handler
- handler
- handler
- Handler
- Handler
- Handler
- Android系统自带的常用数据库
- Windows环境下安装Git教程
- Module找不到R文件
- 江苏科技大学“FlySpiders”本创小组开题答辩
- 2017年PHP程序员未来路在何方
- Handler
- ISO 8601中周数的处理及 Joda-Time 的使用
- 解决百度地图、高德地图自定义点汇聚图片无法平铺问题
- PHP把时间转换成几秒前、几分钟前、几小时前、几天前
- Java的反射机制
- MySQL连接jar包存放位置及JDK、JRE、JVM三者间的关系
- 学习笔记(逆向汇编)Day1-Day5
- 选择排序(从小到大)
- gevent调度流程解析