美文网首页
Handler再次梳理。

Handler再次梳理。

作者: 阿星_ | 来源:发表于2017-11-30 18:56 被阅读0次

1.已经大概梳理了一下Handler的消息机制,以及post方法和我们常用的sendMessage方法的区别。来总结一下,主要涉及四个类Handler、Message、MessageQueue、Looper

新建Handler,通过sendMessage或者post发送消息,Handler调用sendMessageAtTimeMessage交给MessageQueue

MessageQueue.enqueueMessage方法将Message以链表的形式放入队列中

Looperloop方法循环调用MessageQueue.next()取出消息,并且调用HandlerdispatchMessage来处理消息

dispatchMessage中,分别判断msg.callback、mCallback也就是post方法或者构造方法传入的不为空就执行他们的回调,如果都为空就执行我们最常用重写的handleMessage

2.而Looper是在程序入口ActivityThread的main方法里初始化的。

如果要在子线程创建handler那么需要。在构造方法里给一个主线程的looper。

3. 如果需要在子线程和子线程之间通信的话。 不推荐使用handler加Thread,因为需要自己操作looper。推荐使用HandlerThread类,AsyncTask就是通过该类实现。

相关文章

网友评论

      本文标题:Handler再次梳理。

      本文链接:https://www.haomeiwen.com/subject/bmhbbxtx.html