APP啟動速度是一個APP體驗好壞最重要的一個標志,一般APP上線之前都會進行啟動速度的專項測驗,最近看了很多這個測驗方法,發現大家說的都不一致,我在這里總結下,用下面這個方法測驗出來的啟動速度是比較貼合用戶實際使用感覺的,
名詞解釋
- 啟動速度:所謂啟動速度,我給出的定義是從按下APP icon開始,到加載完啟動頁后第一個頁面顯示出來的時間,有時候這個頁面是廣告頁,也可能是登陸頁或者首頁,
- 冷啟動:冷啟動就是APP行程不在系統里時,點擊啟動APP,
- 熱啟動: 熱啟動就是APP行程存活在系統里時,點擊啟動APP,
Android啟動速度測驗方法
Android 的啟動速度測驗方法很簡單,官方有給出命令,所以我們直接用給出的命令測驗就好了
- 啟動命令:
adb shell am start -W -n 包名(appPackage)/類名(appActivity)
#例如
com.taobao.example/.activity.MainActivity
其中,com.taobao.example是這個APP的包名,.activity.MainActivity是這個APP的MAIN Activity,也就是啟動APP的第一個頁面的Activity,

如截圖展示所示,這個APP的啟動時間大概在2227ms,
IOS APP 啟動時間測驗方法
相比較Android,IOS APP 的啟動時間測驗方法就會復雜很多,IOS的啟動時間分為執行main方法前和main方法后,兩個時間加起來就等于啟動時間,所以先列出來這個公式:
IOS APP啟動時間 = main方法執行前的時間 + main方法執行后的時間
1.main方法執行前的時間統計方法
使用xcode打開要測驗APP專案的代碼,按 command + shift + , 進入下面這個頁面

勾選環境變數勾選DYLD_PRINT_STATISTICS_DETAILS = 1
然后RUN一下APP,在日志中就可以列印出來APP的main方法執行之前所花費的時間了,

total time就是main方法執行之前所花費的時間,為2.2秒,
- main方法執行后的時間計算方法
main方法執行后所花費的時間需要在代碼里面打點才能知道,首先找到main.m檔案,插入如下代碼
#在main.m頂部插入
CFAbsoluteTime AppStartLaunchTime;
#main方法中插入
int main(int argc, char * argv[]) {
AppStartLaunchTime = CFAbsoluteTimeGetCurrent();
......
}
其次,找到啟動后第一個頁面的m檔案,這個頁面有可能是首頁,也有可能是廣告頁,然后插入如下代碼:
#在頂部插入
extern CFAbsoluteTime AppStartLaunchTime;
#在viewDidLoad方法中插入
- (void)viewDidLoad {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"App啟動時間--%f",(CFAbsoluteTimeGetCurrent()-AppStartLaunchTime));
});
......
然后啟動一下,查看一下日志列印,發現main方法執行后所花費的時間會列印出來:

花費時間4.64秒,
所以,APP總的啟動時間為2.2 + 4.64 = 6.88秒,
我看網上有些人把第上述的第二塊代碼插入到了AppDelegate.m檔案夾下,個人覺得這種方法跟實際感受到的啟動時間有出入,這個頁面只是APP啟動頁顯示出來的時間,而不是APP啟動后第一個頁面加載出來的時間,嚴格來說,啟動頁加載出來時,不能算是APP完全啟動完成,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/236128.html
標籤:其他
