在介紹完App的啟動流程后,我們發現,其實就是啟動一個App的首頁。
接下來我們看App內部頁面的跳轉(即**子Activity的啟動過程**)。
從ActivityA跳轉到ActivityB,其實可以把ActivityA看作是Launcher,那么這個跳轉過程,和App的啟動過程就很像了。
有了前面的分析基礎,會發現,這個過程不需要重新啟動一個新的進程,所以可以省略App啟動過程中的一些步驟,流程簡化為:
* 1)ActivityA向AMS發送一個啟動ActivityB的消息。
* 2)AMS保存ActivityB的信息,然后通知App,你可以休眠了(onPaused)。
* 3)ActivityA進入休眠,然后通知AMS,我休眠了。
* 4)AMS發現ActivityB所在的進程就是ActivityA所在的進程,所以不需要重新啟動新的進程,所以它就會通知App,啟動ActivityB。
* 5)App啟動ActivityB。
不想看上述文字的,看我畫的這個圖:

整體流程我就不多說了,和上一篇文章介紹的App啟動流程是基本一致的。
以上的分析,僅限于ActivityA和ActivityB在相同的進程中,如果在Manifest中指定這兩個Activity不在同一個進程中,那么就又是另一套流程了,但是整體流程大同小異。
**附錄**:
附一張老羅分析子Activity的啟動過程流程圖

- 前言
- Android 熱補丁技術——資源的熱修復
- 插件化系列詳解
- Dex分包——MultiDex
- Google官網——配置方法數超過 64K 的應用
- IMOOC熱修復與插件化筆記
- 第1章 class文件與dex文件解析
- Class文件解析
- dex文件解析
- class與dex對比
- 第2章 虛擬機深入講解
- 第3章 ClassLoader原理講解
- 類的加載過程
- ClassLoade源碼分析
- Android中的動態加載
- 第4章 熱修復簡單講解
- 第5章 熱修復AndFix詳解
- 第6章 熱修復Tinker詳解及兩種方式接入
- 第7章 引入熱修復后代碼及版本管理
- 第8章 插件化原理深入講解
- 第9章 使用Small完成插件化
- 第10章 使用Atlas完成插件化
- 第11章 課程整體總結
- DN學院熱修復插件化筆錄
- 插件化
- 熱修復
- Android APP開發應掌握的底層知識
- 概述
- Binder
- AIDL
- AMS
- Activity的啟動和通信原理
- App啟動流程第2篇
- App內部的頁面跳轉
- Context家族史
- Service
- BroadcastReceiver
- ContentProvider
- PMS及App安裝過程