Handler机制的基本原理:
今天面试想起问到了一些关于Android多线程的问题,一时半刻回答不来,现今得好好的复习一下,以后根据情况爬一下底层原理看看才行。
*Handler:是子线程同UI线程(主线程)通信的一种机制。在整个子线程传递数据到主线程的过程中充当着"快递员",如同我(子线程)通过打包(Message)物品寄送到收件人(主线程)这一过程,都离不开快递员(Handler)。使用Handler,可以在多个线程并发更新ui的同时保证线程的安全。
用途:
Handler工作流程:
1.异步通信准备
2.消息入队
3.消息队列
4.消息处理
1.异步通信准备:在主线程中创建对象处理器对象Looper,消息队列对象MessageQueue和Handler对象。
2.消息入队:工作线程通过Handler发送消息Message到消息队列MessageQueue中,消息的内容等同工作线程对UI的操作。
3.消息队列:分两种情况,消息出列和消息分发;消息出列就是处理器Looper循环取出Message;而消息分发就是处理器Looper将取出的消息Message发送给创建该消息的处理者Handler。
4.消息处理:处理者Handler接收处理器Looper发送过来的消息;处理者Handler根据消息Message进行UI操作。
注意的是:
一个线程Thread只能绑定一个循环器Looper,但可以有多个处理者handler。
一个循环器Looper可以绑定多个处理者Handler。
一个处理者Handler只能绑定一个循环器Looper。
参考资料:
https://blog.youkuaiyun.com/luoyingxing/article/details/86500542
https://blog.youkuaiyun.com/carson_ho/article/details/80175876