天天看點

安卓性能監控(APM)之啟動時間監控

安卓性能監控(APM)之啟動時間監控

點選桌面App圖示,Launcher程序采用Binder IPC向system_server程序發起startActivity請求;

system_server程序接收到請求後,向zygote程序發送建立程序請求;

Zygote程序fork出新的子程序,即App程序;

App程序,通過Binder IPC向sytem_server程序發起attachApplication請求;

system_server程序在收到請求後,進行一系列準備工作後,再通過binder IPC向App程序發送scheduleLaunchActivity請求;

App程序的binder線程(ApplicationThread)在收到請求後,通過handler向主線程發送LAUNCH_ACTIVITY消息;

主線程在收到Message後,通過發射機制建立目标Activity,并回調Activity.onCreate()等方法。

至此,App進入Activity生命周期,執行完onCreate/onStart/onResume方法,UI渲染結束後便可以看到App的主界面。

完整監控

要完整的監控App啟動時間,需要從使用者點選桌面應用圖示開始,但是因為那時我們的應用還沒有啟動,無法在代碼裡完成監控.

應用内監控

方案描述

監控從Application初始化開始到首頁的activity完成展示為止.

PS:當activity調用onWindowFocusChanged時,UI就完全展示了.

冷啟動和熱啟動

冷啟動是App沒有被啟動過,程序不在記憶體中,點選桌面圖示到看到首頁.

熱啟動是App曾經啟動過,程序還在記憶體中,點選桌面圖示到看到首頁.

冷啟動時間: 從Application到首頁Activity的onWindowFocusChanged.

熱啟動時間:從第一個Activity的onCreate到首頁Activity的onWindowFocusChanged.

安卓性能監控(APM)之啟動時間監控

時間計算陷阱

雖然上圖的時間計算看似非常簡單,但是實際還有陷阱.

因為啟動應用到首頁的過程中還可能出現歡迎界面,請求權限界面,登陸界面等等.這些場景出現時,統計時間應該廢棄,不算做正常的啟動時間.

​​https://www.jianshu.com/p/59a2ca7df681​​

繼續閱讀