Handler机制

1.组成部分

Handler,Looper,MessageQueue,Message

2.工作原理

Handler发送消息到MessageQueue,Looper通过循环从消息队列中获取消息之后传给Handler,Handler接收消息之后开始处理

3.联系

在启动应用创建主线程的时间创建了Handler,在Handler的构造函数中创建了Looper,Looper创建了MessageQueue,MessageQueue负责管理Message

4.细节

在子线程中使用Handler的话需要自己创建Looper和MessageQueue,因为子线程本身是不存在Looper的

调用Looper.prepare,Looper.loop即可

Handler通过sendMessage发送消息的时间,MessageQueue通过enqueueMessage方法把消息存入容器

每个线程最多一个Looper,一个Looper对应一个MessageQueue,可以对应多个Handler

5.在子线程使用Handler

1.创建Handler,2.创建Looper和MessageQueue 3.Handler在创建Handler的线程中运行,所以我们要注意是否是子线程中创建的

  class LooperThread extends Thread {

                               public Handler mHandler;

                               public void run() {

                                               Looper.prepare();

                                               mHandler = new Handler() {

                                                               public void handleMessage(Message msg) {

                                                                              // process incoming messages here

                                                               }

                                               };

                                               Looper.loop();

                               }

                }

6.在主线程更新UI的方法

1.runOnUIThread

2.view.post

3.view.postDelay

4.Handler(确定是主线程的Handler)

你可能感兴趣的:(Handler机制)