Android线程间消息传递机制是什么
导读:本文共1613.5字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 1、消息是怎么发送的?这个问题还可以进行引申:发送延迟消息的方式是延迟插入呢,还是延迟执行?具体回答我也写在流程图上了,自己总结吧~2、怎么进行消息循环的?从这里我们也可以知道,平时我们通过postDelay发送的消息,是不会被精确执行的。假设有一条消息执行时间太长,处理完它再来处理下一条消息的时候,可能已经过了下一条消息规定要执行的时间了。3、怎么处理分发消息... ...
目录
(为您整理了一些要点),点击可以直达。这个问题还可以进行引申:发送延迟消息的方式是延迟插入呢,还是延迟执行?具体回答我也写在流程图上了,自己总结吧~
从这里我们也可以知道,平时我们通过postDelay
发送的消息,是不会被精确执行的。
假设有一条消息执行时间太长,处理完它再来处理下一条消息的时候,可能已经过了下一条消息规定要执行的时间了。
消息发送这个流程很简单,就不画图了。祭上代码:
用文字描述就是:
1、当msg.callback
不为空时,回调msg.callback.run()
方法
2、当handler
的mCallback
成员变量不为空时,则回调方法mCallback.handleMessage(msg)
,如果返回true,直接结束;否则,执行步骤3
3、调用Handler
自身的handleMessage()
,也就是我们经常复写的方法;
1、子线程的Looper和主线程的Looper有什么区别?
答:
子线程的Looper可以退出,主线程的Looper不可以退出
子线程的Looper你要自己去prepare,自己去创建,但是主线程的Looper默认帮你创建了
talk is cheap ,上图~
2、MessageQueue是怎么创建的?
答:MesageQueue是在底层调用native
方法去创建的,本质是一个单链表;
3、Handler的消息延迟是怎么实现的?
消息队列按照消息触发时间(msg.when)
排序
native通过设置epoll_wait
的超时时间,使其在特定时间唤醒
延时精度其实不高
Android线程间消息传递机制是什么的详细内容,希望对您有所帮助,信息来源于网络。