应用内部启动startActivity-Android12

Posted xhBruce

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用内部启动startActivity-Android12相关的知识,希望对你有一定的参考价值。

应用内部启动startActivity-android12

android12-release
桌面冷启动查看AMS:startActivity桌面启动应用


1. 明确冷启动相关对象

首先桌面冷启动查看AMS:startActivity桌面启动应用,明确几个对象:

  1. ActivityThread【ApplicationThread】 已经fork主线程app = newProcessRecordLocked(info, processName, isolated, isolatedUid, hostingRecord)process属性系统默认使用package的名称
  2. Application / Instrumentation / Activity初始化
  3. 简要关系 应用ActivityThread【Activity】 -- Instrumentation -- AMS/ATMS -- 应用另一个Activity

2. 启动流程

参考 AMS:startActivity桌面启动应用 流程

2.1 Intent Flag

  • intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)一般没有改flag,在同一个Task中

frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java

2.2 直接执行realStartActivityLocked

  • 不需要fork应用进程mService.startProcessAsync()

frameworks/base/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java

3. 时序图

以上是关于应用内部启动startActivity-Android12的主要内容,如果未能解决你的问题,请参考以下文章

企业(内部)Swift 应用程序在 iOS9 上启动时退出

应用程序启动android时如何从内部存储中读取文件

python 从应用程序内部重新启动运行python程序

启动 JavaFX 应用程序时的内部 NPE

使用intent从我的ViewHolder内部启动活动会使应用程序崩溃

React Native 应用程序在首次启动时询问 iOS 位置权限,但 0 引用内部任何位置的地理/位置代码