Handler零碎记录

1.message怎么被分发到主线程

消息的分发是这句:msg.target.dispatchMessage(msg);
其中msg.target是指发出消息的Handler,在Handler初始化的时候是需要Looper的;
回到问题我们需要改一下, msg是被分发到Looper所在的线程的

2.Looper.loop()怎么不把主线程卡死

死循环又不会卡死线程,造成ANR的根源是消息处理不及时;一个消息的耐心只有n秒,如果等待n秒还没有轮到它的时候就要报告用户了(ANR)。

3.Looper.prepare()的私有构造方法

private static void prepare(boolean quitAllowed)
MainLooper中默认传入的false,表示不允许退出,当Looper调用quit相关方法传递到MessageQueue中会检查

参考链接:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容