Android Handler机制 - MessageQueue如何处理消息
Handler 如何做到阻塞
Android篇:2019初中级Android开发社招面试解答(中)
Handler消息机制组成:
如何保证looper的唯一性
每个线程只有一个looper,而每个Thread中都又一个关键Threadlocal。是用于存放每个线程的looper对象的,存取的方式是通过get/set。相当于一个map的存放方式。键位key是当前线程的实例。value就是looper对象。所以每次创建looper都会去ThreadLocal里面找有没有当前线程的looper。
如何知道 message 发送到哪个handler处理
当使用 Handler.sendMessage() 发送消息时,调用 enqueueMessage 方法内有 msg.target = this 将 Handler 实例赋值给 msg 对象。当 loop() 取出消息时,调用 dispatchMessage 方法根据 target 属性,回调对应 handler 实例的 handlerMessage 方法处理消息。
调用nativeWake唤醒(这部分内容出自头部连接,详细源码分析可看前辈的)
既然有写入消息,那必定要把消息处理掉,所以唤醒了epoll_wait(),然后继续方法调动awoken(),这个方法就是将之前写入的1读出,表示消费这个事件
随后在Java 层的next()@MessageQueue 就被唤醒,读取在enqueueMessage()@MessageQueue 插在队头的消息进行处理
本文地址: http://www.goggeous.com/i/1/592262
文章来源:天狐定制
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
2025-01-08职业培训
2025-01-08职业培训
2025-01-08职业培训
2025-01-08职业培训
2025-01-08职业培训
2025-01-08职业培训
2025-01-08职业培训
2025-01-08职业培训
2025-01-08职业培训
2025-01-08职业培训
2024-12-14 03:52:11职业培训
2024-12-14 03:52:10职业培训
2024-12-14 03:52:08职业培训
2024-12-14 03:52:08职业培训
2024-12-14 03:52:07职业培训
2024-12-14 03:51:59职业培训
2024-12-14 03:51:58职业培训
2024-12-14 03:51:58职业培训
2024-12-14 03:51:57职业培训
2024-12-14 03:51:56职业培训
2024-12-16 19:58职业培训
2024-12-21 20:49职业培训
2024-12-14 00:11职业培训
2024-12-12 00:00职业培训
2024-12-28 11:27职业培训
2024-12-12 03:14职业培训
2025-01-04 16:38职业培训
2024-12-01 02:46职业培训
2024-11-30 23:28职业培训
2024-12-06 23:26职业培训
扫码二维码
获取最新动态