Handler 机制

来源:互联网 发布:悦木之源 知乎 编辑:程序博客网 时间:2024/06/06 15:40

不多说 先画个图: (忽视我很low的绘画技术)

忽视渣绘画水平

在主线程中 new上一个handler对象,在子线程中进行发送消息 消息的发送会放置在messageQueue当中 Looper(主线程中自动生成)充当着message的管理员,一直处于while(true)当中,如果messageQueue中有message时,读取并交给handler进行处理.

往往在一个线程当中,不仅仅存在一个handler ,所以发送的消息是交给那个哪个handler来处理呢?

这时候 msg.target做了这个工作..在handler发送消息的时候,会携带msg.target.从而确保哪个handler进行接收并相应处理.

上面的情况是handler位于主线程之中的,与主线程进行了绑定…那么…

如果在非主线程之中创建了handler呢?

handler 的消息传递,需要messageQueue,也需要looper的支撑,在主线程中创建的handler,这些都能进行自动的创建(无需创建looper 会发生错误).but….在非主线程之中….

非主线程创建handler
1.创建handler (Looper.prepare());
2.建立消息管理(loop());

0 0
原创粉丝点击