3.inputdispatcher处理
2021-02-04 15:58:17 3 举报
inputdispatcher处理
作者其他创作
大纲/内容
如果需要丢弃event,则丢弃并返回
从队列中读取一个Event
判断是否为重复按键上报
向commandQueue添加doPokeUserActivityLockedInterruptible命令
dispatchKeyLocked
WindowManagerGlobal.java
enqueueDispatchEntriesLocked
当前时间小于唤醒事件,则进入等待
InputDispatcher.cpp
startDispatchCycleLocked
dispatchKeyLocked处理流程
寻找到焦点窗口
INTERCEPT_KEY_RESULT_UNKNOWN
InputTransport.cpp
INTERCEPT_KEY_RESULT_TRY_AGAIN_LATER
resetKeyRepeatLocked
dispatchOnceInnerLocked
sendMessage
找到了目标连接
pokeUserActivityLocked
根据event类型进行处理,这里以keyevent为例
setInjectionResultLocked
dispatchEventLocked
在CommandQueue不为空的情况下,优先处理Command,Command的来源为event分发处理完之后的收尾工作,这里主要分析event的分发工作
prepareDispatchCycleLocked
执行分发event
dispatchOnce
resetANRTimeoutsLocked
根据策略判断是否需要拦截事件
findFocusedWindowTargetsLocked
connection->inputPublisher.publishKeyEvent
重置ANR信息,主要是重置等待超时和处理的handle
InputDispatcher工作流程
mInboundQueue.dequeueAtHead
0 条评论
回复 删除
下一页