Android 应用启动全流程深度剖析(2)

4. 应用进程的创建与启动

4.1 Pause 桌面应用
接着上一节继续往下看,桌面进程收到 input 触控事件并处理后 binder 调用框架 AMS 的的 startActivity 接口启动应用,相关简化代码如下:
在这里插入图片描述
在执行 startActivityInner 启动应用逻辑中,AMS 中的 Activity 栈管理的逻辑,检查发现当前处于前台 Resume 状态的 Activity 是桌面应用,所以第一步需要通知桌面应用的 Activity 进入 Paused 状态,相关简化代码逻辑如下:
在这里插入图片描述
桌面应用进程这边执行收到 pause 消息后执行 Activity 的 onPause 生命周期,并在执行完成后,会 binder 调用 AMS 的 activityPaused 接口通知系统执行完 activity 的 pause 动作,相关代码如下:
在这里插入图片描述
AMS 这边收到应用的 activityPaused 调用后,继续执行启动应用的逻辑,判断需要启动的应用 Activity 所在的进程不存在,所以接下来需要先 startProcessAsync 创建应用进程,相关简化代码如下:
在这里插入图片描述
以上过程从 systrace 上看,如下图所示:
通知 pause 桌面应用:
在这里插入图片描述
确认桌面 activityPaused 状态之后,开始创建应用进程:
在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值