前面几篇文章介绍了事件回调的相关流程,以及回调事件处理函数的相关内容,最后我们再来看一下事件处理完后,如何通知 InputDispatcher 去回调 Callback。
一、客户端回调
在 Android 的事件分发机制中,当客户端(即应用层)完成事件处理后,最终会调用 ViewRootImpl 的 finishInputEvent 方法来通知输入系统事件已处理完毕。
1、ViewRootImpl
源码位置:/frameworks/base/core/java/android/view/ViewRootImpl.java
finishInputEvent
private void finishInputEvent(QueuedInputEvent q) {
……
// 检查事件接收器是否存在
if (q.mReceiver != null) {
// 判断事件是否被消费
boolean handled = (q.mFlags & QueuedInputEvent.FLAG_FINISHED_HANDLED) != 0;
// 判断事件是否被修改过
boolean modified = (q.mFlags & QueuedInputEvent.FLAG_MODIFIED_FOR_COMPATIBILITY) != 0;
if (modi