Android Input——分发流程回调(八)
前面两篇文章介绍了 InputDispatcher 在 Android 输入系统中的事件分发流程,这里我们继续看来看一下分发完成后的回调流程。
一、分发回调
事件分发流程的最后调用了 InputChanel 的 sendMessage() 函数,而 sendMessage() 再调用 socket 的 send() 函数,将打包好的 Message 发送给窗口。最终通过 handleReceiveCallback() 函数进行分发结果的回调。
1、InputDispatcher.cpp
源码位置:/frameworks/native/services/inputflinger/dispatcher/InputDispatcher.cpp
handleReceiveCallback
int InputDispatcher::handleReceiveCallback(int events, sp<IBinder> connectionToken) {
std::scoped_lock _l(mLock);
// 获取连接对象
sp<Connection> connection = getConnectionLocked(connectionToken);
……
bool notify;
// 检查事件类型是否为错误(ALOOPER_EVENT_ERROR)或挂起(ALOOPER_EVENT_HANGU