[Input] App端斲丧事故流程

开发者 2024-9-24 03:19:54 89 0 来自 中国
这是Android Input系列的第三篇文章,前面两篇的地点如下:

  • Input ANR是如何产生的
  • [Input] socket毗连的创建
本日重要讲讲App端在收到事故之后,是如何斲丧这些事故的。
起首,我们看一个事故分发的典范Java堆栈:

1.png 可以看到,事故是从nativePollOnce分发出来的,调到了InputDispatcherReceiver的onReceive方法中,然后再分发给ViewRootImpl去处理处罚。
本日这篇文章,重要讲一下App端从socket中收到事故后,是怎样调治到InputDispatcherReceiver.onReceive方法的。下一篇文章,我们再讲后续ViewRootImpl的分发流程。
开始之前,先要要说明的是,吸收事故的是App端的主线程,末了分发和处理处罚事故,也是在主线程举行操作。
之前我们讲MessageQueue的时间说过,主线程会等候在epoll_wait方法,直到监听的端口有内容写入,才会被唤醒,继承实行下面的流程。更具体的内容,可以去看看我之前的文章从epoll机制看MessageQueue
点击事故的处理处罚流程就是使用的epoll机制,就是我们常说的主线程的Looper机制,下面我们一起来具体看看源码。
epoll机制监听socketFd

由前面的分析知道,我们在创建了socket毗连后,会创建一个WindowInputEventReceiver对象,并将客户端的InputChannel作为构造函数传入。下面我们就来看看WindowInputEventReceiver的构造方法。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-24 09:13, Processed in 0.108042 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表