美文网首页程序员
Handler源码分析

Handler源码分析

作者: 你的益达233 | 来源:发表于2020-11-05 16:15 被阅读0次

直接说总结

想下Handler怎么就处理到Looper发过来的消息呢

  • 我们一开始Handler就持有Looper的对象,同时也持有了Looper对象里面的MessageQueue对象,记住这是持有Looper对象,而不是在Handler新生成的,这个Looper对象是主线程默认创建的,也是唯一一个
  • ok,这时候mHandler.sendMessage(msg),它发msg到MessageQueue中,同时也标记了这msg的target是当前handler。
  • Looper对象一直在loop自己的messageQueue,也就loop Handler中的MessageQueue,取出消息再通过msg.target.dispatchMessage(msg);msg.target就是发消息handler
  • 即调handler的dispatchMessage方法,里面就会调重写的handleMessage方法,就可以处理消息

具体源码分析看大佬的 https://www.jianshu.com/p/b4d745c7ff7a

仔细品我的总结也是可以的,你品

Handler内存泄漏问题

@Override
protected void onDestroy() {
    super.onDestroy();
    if (mHandler != null){
        mHandler.removeCallbacksAndMessages(null);
    }
}

相关文章

网友评论

    本文标题:Handler源码分析

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