Android App的启动过程
1.點擊桌面App圖標時,Launcher的startActivity()方法,通過Binder通信,調用SystemServer進程中AMS服務的startActivity方法,發起啟動請求
2.SystemServer進程接收到請求后,向Zygote進程發送創建進程的請求
3.Zygote進程fork出App進程,并執行ActivityThread的main方法,創建ActivityThread線程,初始化MainLooper,主線程Handler,同時初始化ApplicationThread用于和AMS通信交互
4.App進程通過Binder向SystemServer進程發起attachApplication請求,這里實際上就是App進程通過Binder調用SystemServer進程中AMS的attachApplication方法,上面我們已經分析過,AMS的attachApplication方法的作用是將ApplicationThread對象與AMS綁定
5.SystemServer進程在收到attachApplication的請求,進行一些準備工作后,再通過binder IPC向App進程發送handleBindApplication請求(初始化Application并調用onCreate方法)和scheduleLaunchActivity請求(創建啟動Activity)
6.App進程的binder線程(ApplicationThread)在收到請求后,通過handler向主線程發送BIND_APPLICATION和LAUNCH_ACTIVITY消息,這里注意的是AMS和主線程并不直接通信,而是AMS和主線程的內部類ApplicationThread通過Binder通信,ApplicationThread再和主線程通過Handler消息交互
7.主線程在收到Message后,創建Application并調用onCreate方法,再通過反射機制創建目標Activity,并回調Activity.onCreate()等方法
8.到此,App便正式啟動,開始進入Activity生命周期,執行onCreate/onStart/onResume方法,顯示UI
總結
以上是生活随笔為你收集整理的Android App的启动过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android系统的启动过程
- 下一篇: Android动画之帧动画和补间动画