Android - Handler消息机制

2021-03-10  本文已影响0人  雁度寒崖

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

具体流程一般是:

  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")
  }
}
上一篇 下一篇

猜你喜欢

热点阅读