所以它具备将InputEvent派发到指定的View的能力。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 public final class ViewRootImpl implements ViewParent, View.AttachInfo.Callbacks, ThreadedRenderer.HardwareDrawCallbacks { void enqueueInputEvent(InputEvent event, InputEventReceiver receiver, int flags, ...
ViewRootImpl使用一个InputEventReceiver对象获得WMS发送的事件,在onInputEvent(InputEvent event)回调中,它执行enqueueInputEvent(event, this, 0, true)将事件添加到一个链表,这样对事件的deliver是保证顺序的! 分发InputEvent 过程稍微复杂,因为使用了InputStage组成的一个"input pipeline"来处理InputEvent事件。 其中一...
InputEventReceiver类 注意InputEventReceiver类的dispatchInputEvent方法,当输入事件到来时该方法由native层代码发起调用,然后调用了onInputEvent(event)方法。从前面知道WindowInputEventReceiver类重写了onInputEvent方法,因此事件会传递到enqueueInputEvent方法。 enqueueInputEvent方法 该方法先获取一个指向当前事件的输入事件队...
15:57:14.590 W/System.err: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7047) 15:57:14.590 W/System.err: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7220) 15:57:14.590 W/System.err: at android.view.InputEventReceiver.dispatchInputEv...
ViewRootImpl.java -> enqueueInputEvent() 以上方法,由于默认是false,会执行2: ViewRootImpl.java -> scheduleProcessInputEvents() 以上方法,再给Handler发一条MSG_PROCESS_INPUT_EVENTS(处理的消息) ViewRootImpl$ViewRootHandler.java -> handleMessage() ...
看到WindowInputEventReceiver类继承了InputEventReceiver类: 注意InputEventReceiver类的dispatchInputEvent方法,当输入事件到来时该方法由native层代码发起调用,然后调用了onInputEvent(event)方法。从前面知道WindowInputEventReceiver类重写了onInputEvent方法,因此事件会传递到enqueueInputEvent方法。
ViewRootImpl.enqueueInputEvent 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. (2)Touch事件到达APP后怎么传递到对应页面 ViewRootImpl.enqueueInputEvent(InputEvent event, InputEventReveiver receiver, int flags, boolean processImmediately) ViewRootImpl.doProcessInputEvent() ...
注意InputEventReceiver类的dispatchInputEvent方法,当输入事件到来时该方法由native层代码发起调用,然后调用了onInputEvent(event)方法。从前面知道WindowInputEventReceiver类重写了onInputEvent方法,因此事件会传递到enqueueInputEvent方法。 该方法先获取一个指向当前事件的输入事件队列QueuedInputEvent对象,最后调用doProcessInp...
41 at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7490) 42 at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7448) 43 at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7409) 44 at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(Vie...
所以这里执行的WindowInputEventReceiver的dispachInputEvent(): final class WindowInputEventReceiver extends InputEventReceiver { public void onInputEvent(InputEvent event) { enqueueInputEvent(event, this, 0, true); } ... } ViewRootImpl void enqueueInputEvent(InputEvent event, InputEventReceiver ...