美文网首页
Android - Handler消息机制

Android - Handler消息机制

作者: 雁度寒崖 | 来源:发表于2021-03-10 16:07 被阅读0次

Handler的主要作用是收发 msg 和切线程,他的消息机制离不开Looper、MessageQueue

  • 其中 Looper 每个线程只能持有一个,主要负责循环查看 MessageQueue 里面是否有 msg 需要处理,并将需要处理的消息取出,交给 Handler
  • MessageQueue 是负责存放消息的,数据结构是一个单链表,这样就可以方便地插入或删除 msg

具体流程一般是:

  1. Handler 发送一条msg => 本质是向MessageQueue里插入1.1一条msg
    1.1插入时候的依据是msg.when => SystemClock.uptimeMillis() + delayMillis
  2. 这条msgMessageQueue.next()2.1返回并交给Handler去处理
    2.1 next()会在有同步屏障(msg.target==null)的时候遍历查找并返回最早的异步消息,并在移除屏障后,从头取出并返回消息
  3. Handler.dispatchMessage(msg)会优先处理msg.callback3.1,如果msg.callback为空,就处理Handler.mCallback3.2,然后处理是msg本身
    3.1msg.callback是在调用Handler.post(Runnable)时,里面的Runnable(runOnUIThreadview.post(Runnable)也用的是Handler.post(Runnable)Runnable是一样的)
    3.2这是在不继承Handler的情况下,另一种调用Handler的方式
class MyHandlerCallBack: Handler.Callback {
  override fun handleMessage(msg: Message?): Boolean {
    TODO("Not yet implemented")
  }
}

相关文章

网友评论

      本文标题:Android - Handler消息机制

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