Android中有两个非常重要的知识点,分别是Binder机制和Handler机制。前者用于跨进程通信,通过ServiceManager向上层应用提供大量服务,后者用于进程内通信,以消息队列的形式驱动应用。之前的文章已经多次分析过与Binder相关的内容,比Handler复杂得多,后面还会继续分析Binder。说到Handler,安卓开发者一定很熟悉,一般是用来切换线程的。相关的类有Looper、MessageQueue、Message等等。消息队列是事件驱动的基础。本文将重点分析消息队列,并简要介绍其他内容,因此我们可以参考生产者-消费者模式。
从汉德勒入口分析:
looper . prepare();
1.创建一个线程专用的Looper:sthreadlocal . set(新的Looper(quit allowed));
2.初始化处理程序:MH handler = new handler();在构造函数中,将获得线程私有Looper,如果没有获得,将报告一个错误。
3.打开无限循环:looper . loop();。
循环方法中的主要代码如下:
活套的方法也叫:
重点是写(mwakeventfd & amp:Inc,sizeof(uint64_t)),写一个1。此时,epoll可以收听事件并醒来。
1.《messagequeue 【源码分析】关于MessageQueue,这一篇就够了!》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《messagequeue 【源码分析】关于MessageQueue,这一篇就够了!》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1646246.html