本文主要是介绍Android 异步消息处理机制 Looper、Handler、Message三者关系总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
总结如下:
1、首先Looper.prepare()在本线程中保存一个Looper实例,然后该实例中保存一个MessageQueue对象;因为Looper.prepare()在一个线程中只能调用一次,所以MessageQueue在一个线程中只会存在一个。
2、Looper.loop()会让当前线程进入一个无限循环,不断从MessageQueue的实例中读取消息,然后回调msg.target.dispatchMessage(msg)方法。
3、Handler的构造方法,会首先得到当前线程中保存的Looper实例,进而与Looper实例中的MessageQueue相关联。
4、Handler的sendMessage方法,会给msg的target赋值为handler自身,然后加入MessageQueue中。
5、在构造Handler实例时,我们会重写handleMessage方法,也就是msg.target.dispatchMessage(msg)最终调用的方法。
6、在Activity中,我们并没有显示的调用Looper.prepare()和Looper.loop()方法,为啥Handler可以成功创建呢?这是因为在Activity的启动代码中,已经在当前UI线程调用了Looper.prepare()和Looper.loop()方法。
摘自鸿神:http://blog.csdn.net/lmj623565791/article/details/38377229
这篇关于Android 异步消息处理机制 Looper、Handler、Message三者关系总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!