在MessageQueue中,有两个重要的方法:一个是enqueueMessage,负责将消息加入队列;一个是next,负责从消息队列中取出一个
在MessageQueue中,有两个重要的方法:一个是
enqueueMessage
,负责将消息加入队列;一个是next
,负责从消息队列中取出一个待处理的消息。
// Android.os.MessageQueue
MessageQueue {
boolean enqueueMessage(Message msg, long when) {
// ...
}
Message next() {
// ...
for (;;) {
// ...
nativePollOnce(ptr, nextPollTimeoutMillis);
// ...
}
}
}
在从消息队列中取出下一条消息时,会调用
nativePollOnce
方法,进入native层,在native中经过一系列处理,最终会回调到Framework层InputEventReceiver.java的dispatchInputEvent
方法。
native中的处理及整个完整的过程,欢迎参考gityuan的Input系统—事件处理全过程一文。
android.view.InputEventReceiver.java:
// Called from native code.
@SuppressWarnings("unused")
private void dispatchInputEvent(int seq, InputEvent event, int displayId) {
mSeqMap.put(event.getSequenceNumber(), seq);
onInputEvent(event, displayId);
}
下面用图表示流程,具体代码以后有时间加上。
--结束END--
本文标题: 事件在Android Framework层的完整流程
本文链接: https://www.lsjlt.com/news/29129.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0