55.证明一个偶数总能表示为两个素數之和
* 55.证明一个偶数总能表示为两个素数之和。55.证明一个偶数总能表示为两个素數之和
* 55.证明一个偶数总能表示为两个素数之和。答:就是一些有特定意义的英文單词,你不可以用作文件名或变量名.至于具本用法,你还是参考一下书吧!
答:a=?中没有3。
关于Android触摸事件分发机制在日常應用层开发工作中最常接触的是ViewGroup中的事件派发。当应用窗口接收到系统传来的Event后到将Event传入ViewGroup前还有一段路程,本文就来分析下这个过程
APP側想要从系统接收触摸事件,首先需要进行“接收器”的注册我们知道Acitivty启动在onResume之后,会创建ViewRootImpl然后调用它的setView方法向WindowManagerService添加窗口,而“接收器”的注册就是在这个阶段
该方法中几个比较关键的步骤:
该方法中首先调用native方法打开两个InputChannel一个用于系统端写入事件,一个用于应用端读取事件(当事件处理完毕后应用端InputChannel会用来寫入反馈,系统端InputChannel用来读取反馈)之后将用于发送事件的InputChannel注册给InputManagerService,将用于接收事件的InputChannel传回给应用窗口
这里的打开InputChannel指的voidinput是什么函数呢?進入native层方法看看:
关于socketpair的详细解释可以参考
输入事件“接收器”的注册过程其实就是创建了一对InputChannel,分别保存在InputManagerService侧和应用窗口侧利用其进行双端数据传输。然后又创建WindowInputEventReceiver用于应用窗口侧在接收到事件后,进一步分發处理
这里不讨论InputManagerService中的事件发送流程,仅从触发事件接收开始分析
事件接收是通过先前注册的主线程Looper监听fd来实现,收到事件后封装成對应类型的触摸事件调用Java层InputEventReceiver#dispatchInputEvent方法传递事件对象进行派发。
加入队列后就立即开始处理
该方法中会依次将队列中的事件全部进行分发。
InputStage昰事件分发责任链中的一个基本单元输入事件可能会经过多个InputStage,直到有InputStage拦截处理或者都没有处理。
可以看到通过组合包装的方式创建叻InputStage责任链越早创建的InputStage越后执行。
该方法中根据不同事件类型调用不同方法处理事件。
当MotionEvent传给DecorView后还没有直接派发给我们设置的视图树。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。