Handler的异步消息机制

Handler异步通信机制(包含Looper、 MessageQueue)

https://www.jianshu.com/p/9fe944ee02f7

1.作用

Handler的消息传递机制用来实现子线程对UI线程中UI的更新。

2.相关概念

2.1Looper

轮循器,扮演MessageQueue和Handler之前桥梁的作用。

主要负责创建MessageQueue;与当前线程绑定;消息循环:循环取出MessageQueue中的Message;消息派发:将取出的Message交付给相应的Handler。

(1)一个线程中只能有一个Looper,但是一个Looper可以和多个线程的Handler绑定起来,也就是说多个线程对应的Handler可以往一个Looper所持有的MessageQueue中发送消息。这就为线程之间的通信提供了可能。

(2)Handler在创建的时候可以显示指定Looper,这样在Handler在调用sendMessage()投递消息的时候会将消息添加到指定Looper里面的MessageQueue。如果不指定Looper,Handler默认绑定的是创建它的线程的Looper。

3.异步消息传递机制

异步消息传递机制的步骤包括异步通信的准备、消息发送、消息循环和消息处理。

(1)异步通信的准备包括Looper、MessageQueue和Handler的实例化。

(2)消息发送

(3)消息循环

Looper执行Loop()方法进入消息循环,在这个循环工程中不断地从MessageQueue中取出消息,然后分发到指定的Handler。

(4)消息处理

4.Handler

Handler向MessageQueue发送消息分为send和post两种方式。

猜你喜欢

转载自blog.csdn.net/xiayuexingkong/article/details/79540324