Android点击桌面图库应用启动流程trace分析

Android点击桌面图库应用启动流程trace分析

手指按击手机屏幕触发的Input事件处理流程

1、system的InputReader从EventHub把Input事件取出来放入 InboundQueue,即 iq 事件队列,然后交给 InputDispatcher 做事件分发。

2、system的InputDispatcher拿到 InputReader的事件后,对事件进行包装,放入 OutboundQueueue,即 oq 队列,寻找并分发到目标App应用接收事件;

3、WaitQueue队列即 wq 队列,里面是已经派发给目标 App应用的事件,这些事件等待 App应用处理;

4、PendingInputEventQueue队列 aq 中记录的是应用需要处理的Input事件,这里可以看到input事件已经传递到了应用进程;

在trace中,iq队列,oq队列,wq队列,wq队列,都在system_server进程中。每一个App应用都有自己的aq队列。

deliverInputEvent 标记了 App应用UI主线程被 Input 事件唤醒。

点击桌面App应用的图标启动应用,trace上显示,InputReader里面可以看到手指按下去的AppLaunch_dispatchPtr:Down和手指抬起的AppLaunch_dispatchPtr:Up,分析应用启动流程,可以从AppLaunch_dispatchPtr:Up开始。

桌面进程收到input点击图标后,启动事件后调用binder框架AMS的的startActivity启动应用。

https://blog.csdn.net/zhangphil/article/details/131249820https://blog.csdn.net/zhangphil/article/details/131249820

相关推荐
7***318813 小时前
若依微服务中配置 MySQL + DM 多数据源
android·mysql·微服务
我是好小孩14 小时前
【Android】常见的架构模式:MVC, MCP, MVVM
android·架构·mvc
Digitally14 小时前
如何通过蓝牙将联系人从 iPhone 传输到 Android
android·ios·iphone
embrace9915 小时前
【C语言学习】结构体详解
android·c语言·开发语言·数据结构·学习·算法·青少年编程
用户693717500138415 小时前
11.Kotlin 类:继承控制的关键 ——final 与 open 修饰符
android·后端·kotlin
用户02738518402615 小时前
【Android】LiveData的使用以及源码浅析
android·程序员
用户693717500138415 小时前
10.Kotlin 类:延迟初始化:lateinit 与 by lazy 的对决
android·后端·kotlin
正经教主16 小时前
【Git】Git06:Git 管理 Android 项目教程(含GitHub)
android·git
安卓理事人16 小时前
安卓多种通知ui更新的方式(livedata,rxjava,eventbus等)
android·ui·echarts
BS_Li16 小时前
【Linux系统编程】Ext系列文件系统
android·linux·ext系列文件系统