说到Handler就会被问到Handler、Message、Looper之间的关系了。那么Handler为什么要出现呢,它的作用是什么?
1.Handler的作用
Android是单线程模型的操作系统。为了避免多线程更新UI出现混乱,出现线程不安全,在Android中只能使用主线程(UI线程)更新UI,那么子线程和UI线程之间的通信怎么通信呢?Handler就是为了解决这个问题的。
2.Handler、Message、Looper之间的关系
Handler:消息处理者负责发送消息和消息内容的处理。sendMessage和handleMessage方法</br>
Message:消息对象,信息的携带者。</br>
Looper:它是消息的载体,Looper.loop()是一个死循环,会不断的从消息队列中取出消息。如果有消息就会处理,否则会阻塞。</br>
MessageQueue:用来存放Handler发送的消息的消息队列(双向链表结构)。</br>
从源码的角度来说,我们通过Handler发送Message到MessageQueue,MessageQueue调用enqueueMessage方法向消息队列中插入一条消息。Looper会不停的轮询Message,它是一个阻塞式死循环,当发现有消息的时候,会调用dispatchMessage方法分发给Handler,Handler通过handlerMessage进行处理这些消息。
网友评论