关于Handler的简单理解

handler主要用于线程的切换,因为在安卓中,主线程不能进行耗时操作,而子线程不能更新UI,所以当子线程网络请求或执行其他耗时任务完成后,在更新UI的时候,需要将获取的数据发送的主线程,这个时候我们经常使用handler进行线程的切换。Handler机制主要涉及到四个类,handlermessageloopermessageQueue,首先message在子线程负责携带消息进行发送,messageQueue相当于一个容器,对发过来的消息进行统一处理,looper相当于消息循环器,不停循环消息队列中的消息,交给消息处理者handler进行消息处理。

 

关于主线程向子线程发消息的问题:因为Android主线程默认持有looper循环器,所以当我们在主线程创建了handler以后,子线程发消息后,handler会通过已有的looper获取到消息队列中的消息,但是,如果handler创建在子线程,子线程是没有looper的,所以需要我们手动调用looper.prepare()方法,然后当子线程的handler需要数据的时候,调用looper.loop()方法去循环消息队列中的消息。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容