美文网首页程序员
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