Android的事件处理过程
lin-0410
最痛苦的事情,不是失败了,而是我本可以......
所以,如果目标还没去实现,不要感叹为时已晚,因为种一棵树最好的时间是十年前,其次是现在!
展开
-
嵌套View的滑动,及拦截冲突问题.
分析嵌套view滑动时为什么会有冲突,怎样解冲突这里的一个场景是:父View是一个可以左右滑动的界面(可以自定义ViewPage,模拟出冲突的情况,因为ViewPager已经处理了滑动冲突,所以如果不重写,模拟不出这里的场景),其子View是一个可以上下话的界面,比如是一个listView.抛开ims侧的事件处理逻辑,直接说应用侧.应用侧事件分发的起点从Activity开始.pu...原创 2020-02-04 00:03:19 · 2845 阅读 · 0 评论 -
模拟MotionEvent事件
这两天在做模块的单元测试,需要模拟触屏事件,手势操作,下面针对MotionEvent做下代码记录:下面的事件注入都会调用一个函数:Instrumentation mInstrumentation; public void sendPointerEvent(int action, Point point) { MotionEvent event = MotionE...原创 2019-10-31 19:03:52 · 1746 阅读 · 0 评论 -
android事件处理,对事件的接收处理,(6)
六,对事件的接收,从ViewRootImpl.java 说起。 为什么要从ViewRootImpl说起呢?还记得前面说inputChannel通道的时候,是从添加一个窗口开始的,那么添加窗口就是从ViewRootImpl的setView开启的。 ViewRootImpl.javapublic void setView(View view,WindowManage原创 2017-09-19 17:14:04 · 906 阅读 · 0 评论 -
android事件处理,把事件通知到焦点窗口,(5)
五,接下来的问题是InputDispatch是怎么把事件通知到到焦点窗口InputTarget的呢?先看下InputTarget的定义,InputDispatcher.h一个inputtarget表明了怎样把一个输入事件分发给一个特定的窗口。struct InputTarget { enum{ //这个flag指示 事件应该发给前台应用原创 2017-09-19 17:11:01 · 985 阅读 · 0 评论 -
android事件处理,InputDispatch怎么处理事件的?(4)
四,InputDispatch怎么处理事件的?InputDispatch的循环同样是通过InputDispatchThread的ThreadLoop调用dispatchOnce实现的。在分发事件的处理中,如果事件类型是TYPE_KEY,将分发给dispatchKeyLocked。InputDispatcher.cppvoidInputDispatcher::dispatchOnce原创 2017-09-19 17:08:07 · 792 阅读 · 0 评论 -
Android事件处理过程,InputDispatchThread和InputReaderThread的协作,(3)
三、另一个线程InputDispatchThread,它的实现核心是InputDispatch。InputDispatchThread和InputReaderThread是要协同工作的,那是怎么协作的呢?前面说过这两个线程是在frameworks/native/services/inputflinger/InputManager.cpp中创建的。InputManager::InputM原创 2017-09-19 17:03:33 · 801 阅读 · 0 评论 -
Android 事件处理过程,读取事件线程,(2)
二、InputReaderThread, InputManager创建的两个主要线程之一InputReaderThread,它的主要工作是轮询设备节点是不是有新的事件发生,这是一个独立的循环线程。他的运行通过前面提到的 mReaderThread→run()这个run方法启动的,这个run方法接着调用_threadLoop,InputReaderThread的核心实现类是Input原创 2017-09-19 17:01:46 · 538 阅读 · 0 评论 -
Android 事件处理过程,(1)
Android 事件处理过程 一、事件主要包括按键-keyEvent,触屏-motionEvent,事件投递的过程分为几个部分,源信息的采集->WindowManagerService分配->应用程序处理。Android通过访问/dev/input节点来获知当前发生的事件。WindowManagerService是窗口的管理者,记录了系统中所有窗口的状态信息,所以它能够判断应该原创 2017-09-19 16:57:53 · 1067 阅读 · 0 评论