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/c/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-11-27 04:35职业培训
2024-12-05 15:37职业培训
2024-11-29 14:13职业培训
2025-01-02 15:19职业培训
2025-01-02 14:39职业培训
2024-12-23 15:45职业培训
2025-01-03 10:27职业培训
2024-12-08 09:42职业培训
2024-11-26 07:38职业培训
2024-11-30 21:44职业培训
扫码二维码
获取最新动态