Android中的 Handler

来源:互联网 发布:如何删除win10网络共享 编辑:程序博客网 时间:2024/06/05 16:01

Handler 消息处理器,顾名思义他是一个用来处理消息的工具。常见的搭配有Handler,Looper,Message,MessageQueue。


从该图可以看出一个程序可以有多个线程,但只能有一个Looper和一个MessageQueue,而Handler和Message的数量则不受限制。因此我们也能分析出它的工作模式,那就是所有的Message汇聚成一个MessageQueue,然后再由Looper交给Handler处理。

Looper的使用方法相当的简单,因为他的源码上附有一个简单的Demo。

Handler和Thread一样窦世友Linux底层处理。这也就是说不好关闭,建议一般别用。

Handler源码分析:

恕在下无能,只能看出里面有很多构造。以及handleMessage,以及其他的类似getMessage的方法.

handleMessage():当接收到其他线程发送的消息触发。

注意,他没有run方法。

Looper源码简易分析:

ThreadLocal是唯一的。

ThreadLocal是一个List类型,及长度可变,先进先出。

prepareMainLooper里面的锁是类锁,这就意味着一次只能访问一个。

最重要的当然是内部的loop()方法(为了自己的自学能力请亲自翻看源码)

MessageQueue,消息队列,没啥好解释的,值得一提的就是他还有一个接口。

synchronized 锁,以类为锁,则该方法一次只能有一个对象访问,防治同步数据一样。

RunAble:接口。轻量级线程。只能通过主线程或子线程启动。只需要重写Run方法。


0 0
原创粉丝点击