![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
InputManager
文章平均质量分 96
super_marie
这个作者很懒,什么都没留下…
展开
-
InputManager(3)--键盘事件的分发[part 4:InputDispatcher 接收消息处理结果]
当一个输入事件经过上面的层层判断,确认了处理者并且完成处理之后,就会调用 `finishInputEvent()` 函数结束输入事件的调用,那么在结束输入事件的处理时又会有哪些处理逻辑,最终如何将 **InputDipatcher** 对象中存储在等待处理反馈队列 **waitQueue** 中的输入事件给删除的呢?接下来就让我们从 `finishInputEvent()` 函数入手,开始逐一分析原创 2021-12-26 17:59:04 · 1099 阅读 · 0 评论 -
InputManager(3)--键盘事件的分发[part 3:窗口获取输入事件]
经过上面的分析,此时 **InputMessage** 对象借由 **server** 端 **InputChannel** 的 **Socket** 对象发送到了 **Client** 端 InputChannel 的 **Socket** 处,而 **Client** 端 **InputChannel** 添加了 **Socket** 的监听,当 存在消息时,就会调用 `NativeInputEventReceiver::handleEvent()` 函数进行处理,那么接下来我们就从此处开始进行梳理接原创 2021-12-26 17:53:16 · 1896 阅读 · 0 评论 -
InputManager(3)--键盘事件的分发[part 2:InputDispatcher 事件分发]
经过 part 1的分析,我们可以知晓**InputDispatcher**对象是如何获取到输入事件的,那么接下来就让我们来梳理一下,当 **InputDispatcher** 获取到输入事件后,是如何进行分发的原创 2021-12-26 17:43:10 · 1003 阅读 · 0 评论 -
InputManager(3)--键盘事件的分发[part 1:InputReader 事件获取]
InputReader 事件获取事件分发①. InputReader 事件获取⑴ `processEventsLocked()`1. `processEventsForDeviceLocked()`2. `process()`3. `process()`4. `processKey()`ⅰ`getListener()`Ⅱ `notifyKey()`⑵. `flush()`1. `notify()`总结:事件分发经过前两篇的分析,我们先来简单简述一下事件分发的流程:当有键盘事件发生,InputR原创 2021-12-26 16:03:17 · 1366 阅读 · 0 评论 -
InputManager(2)--InputChannel的注册
InputChannel在前面一章,我们分析了 InputManager 的创建和启动,并且详细分析了 在 InputReader 线程中,用来获取 事件的 EventHub 的创建以及事件获取的流程。那么接下来在介绍键盘事件的分发流程之前,先来梳理一下 InputChannel 的注册流程。在一个 Activity 启动时,会通过与该Activity关联的ViewRoot对象来和 InputManager 建立一个连接,这个连接就是 InputChannel,而这个 InputChannel原创 2021-12-25 23:53:19 · 725 阅读 · 0 评论 -
InputManager(1)--InputManager的创建和启动
文章目录InputManagerService和输入事件①. InputManagerService的创建1. `InputManagerService()`2. `nativeInit()`3. `NativeInputManager()`4. `InputManager()`5. InputReader 和 InputDispatcher 线程的创建:5.1.1. `createInputDispatcher()`5.1.2. `InputDispatcher()`5.2.1. `createInp原创 2021-12-23 23:06:50 · 1195 阅读 · 0 评论