android 下的 handler Message
研究了下android下的 handler? message 实现原理: ? ? new handler() 的时候? 从ThreadLocal里面 获取当前线程下的 Looper实例下的?MessageQueue 的引用 保存在 handler.mQueue属性里面 handler发送消息本质就是向此集合写值 ? 几个比较重要的节点 1.Looper.perpare() 实例化当前线程Looper对象 2. new handler()? ?选定 当前线程Looper对象? 3.handler.sendMessage() 发送消息? 本质是向?mQueue写值? 往选定的Looper存消息 4.Looper.loop()方法 取出当前线程Looper对象的消息执行相关操作 本质是从当前MessageQueue?取值 ? 所以? 使用的时候应该注意 1.? new Handler 和 Looper.loop,Looper.prepare? 是同一个线程 ,sendMessage可以在任何线程?? 2.? new Handler? 必须在 Looper.perpare()之后? (Looper 不存在 肯定不可能有??mQueue) 3. 主线程默认调用了Looper.loop,Looper.prepare? 其他线程需手动处理 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |