美文网首页
谈谈Handler原理

谈谈Handler原理

作者: ContentMy | 来源:发表于2019-11-01 11:13 被阅读0次

    最近辞职在家,正在准备面试的东西,在搞简历的时候,又看到了Handler机制这个东西,又想起了去年面试时候面试官问到Handler机制时自己回答的紧张而又断断续续,虽然结果是好的,但是此刻仔细回想,还是语言组织以及当时只想源码里怎么怎么样,而忽略了自己本身要对Handler机制的深入理解的正确性。

    都说我们Android在启动后是有一个主线程也就是UI线程去执行的,当我们要做一些类似于网络请求或者别的耗时操作的时候,我们要去开启一个工作线程去执行耗时操作,等到耗时操作结束时,有更新UI的操作需求的话,我们通过Handler可以满足这个更新UI的需求。
    那么如何去通知主线程更新UI呢?Handler的发送消息可以通过sendMessage或者post的方式去完成,前者是发送的message对象,后者是一个Runnable对象。但实际上post内部其实也是调用的sendMessageAtTime去通过message传递消息的。

    既然是说到了Message,那么就不得不提MessageQueue和Looper。
    当我们去发送消息的时候,我们的消息都会放到消息队列(也就是MessageQueue)中,然后通过Looper去遍历提取消息,如果为空的话Return,如果有消息的话,就调用了Handler的dispatchMessage方法回调。在diapatchMessage中,做了判断分辨是发送消息的是sendMessage还是post,这里post的Runnable的对象是存到了Message的callback中,所以对callback做了非空判断去决定最后调用的方法

    相关文章

      网友评论

          本文标题:谈谈Handler原理

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