IMS:InputDispatcher 接收反馈进行下一次发送
IMS:InputChannel通过socket发送Input给App 在该文章中已经讲到 “InputDispatcher” 线程的 Looper 添加对 socket 服务端的监听
“InputDispatcher” 线程的 Looper 添加对 socket 服务端的监听
frameworks/native/services/inputflinger/dispatcher/InputDispatcher.cpp
这里看到 fd 触发调用到InputDispatcher::handleReceiveCallback
“InputDispatcher” 线程接收反馈,执行 gotOne 下一个事件发送
通知系统准备启动下一次分发流程
谁反馈给“InputDispatcher” 线程
看完上面,就会有个疑问:谁发送sendMessage信息,从而触发回调InputDispatcher::handleReceiveCallback
其实IMS:InputChannel通过socket发送Input给App 中InputStage责任链分发最后都会有个完成finishInputEvent
,这里就会反馈信息给“InputDispatcher” 线程。
frameworks/base/core/java/android/view/ViewRootImpl.java
frameworks/base/core/java/android/view/InputEventReceiver.java
frameworks/base/core/jni/android_view_InputEventReceiver.cpp
frameworks/native/libs/input/InputTransport.cpp
通过 InputChannel->sendMessage,将TYPE_FINISHED类型的消息,发送回InputDispatcher线程