[Android]Activity启动过程
生活随笔
收集整理的這篇文章主要介紹了
[Android]Activity启动过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android系統啟動加載流程:
參考圖
- Linux內核加載完畢
- 啟動init進程
- init進程fork出zygote進程
- zygote進程在ZygoteInit.main()中進行初始化的時候fork出SystemServer進程
- SystemServer進程開啟的時候初始化ActivityThread和ActivityManagerService(其它還有PowerManagerService,DisplayManagerService,PackageManagerService)
- 啟動Launcher,Launcher本質上也是一個App,繼承自Activity
App與AMS通過Binder進行IPC通信
啟動一個Activity
客戶端:ActivityManagerProxy --> Binder驅動 --> ActivityManagerService:服務器
- ActivityThread
老板,雖然說家里的事自己說了算,但是需要聽從AMS的指揮 - Instrumentation
老板娘,負責家里的大事小事,但是一般不拋頭露面,聽一家之主ActivityThread的安排,每個Activity都有一個Instrumentation引用,整個進程只有一個Instrumentation實例 - ActivityManagerProxy
ActivityManagerNative.getDefault().startActivity獲取ActivityManagerProxy對象通過Binder IPC與AMS通信 - AMS
真正啟動一個Ativity(ActivityStackSupervisor, ActivityStack)
Resume一個Activity
客戶端:ApplicationThread <-- Binder驅動 <-- ApplicationThreadProxy:服務器
- AMS
- ApplicationThreadProxy
ApplicationThreadProxy對象通過Binder IPC與客戶端通信。 - ApplicationThread
- Handler
- ActivityThread
- Activity
調用onResume方法
AMS(SystemServer進程)與zygote通過Socket進行IPC通信
參考:http://blog.csdn.net/zhaokaiqiang1992/article/details/49428287
總結
以上是生活随笔為你收集整理的[Android]Activity启动过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Nexys4 DDR的温度数码管实时
- 下一篇: 基于Nexys4 DDR的弹球游戏实现