1. 程式人生 > >APP啟動時白屏時間過長問題的優化

APP啟動時白屏時間過長問題的優化

一、App啟動分類

1、冷啟動
App在後臺被清除或者第一次啟動時,此啟動方式,從點選應用圖示到顯示介面會經歷以下過程:
這裡寫圖片描述
2、暖啟動
3、熱啟動
這兩種啟動一般不會出現較長的白屏時間,這裡不做考慮,也可以參考冷啟動優化方式。

二、白屏時間主要影響因素

1、裝置效能
2、App的程序個數
3、白屏的Total Time : Application的onCreate()執行時間 + Activity的onCreate()執行時間

對於一個大型的App來說,通常會把相關的第三方SDK的初始化置於Application的onCreate()方法中。

三、解決辦法

1、由於白屏總時間等於Application的onCreate()執行時間 + Activity的onCreate()執行時間,所以不要在這兩處方法中進行耗時操作,可以將其推後執行或放在子執行緒中執行。

2、對於多程序的應用來說,每新建一個程序就會初始化Application一次,即會執行Application的onCreate()方法多次,所以將只需要在主程序中初始化的方法推後至Activity的onCreate()中執行。對於只在特定程序中需要初始化的部分方法,可以在Application的onCreate()方法中依據程序名去判斷是否需要執行初始化。

3、如果在初始化過程中需要讀取自定義Prop配置檔案或者SharedPref快取,若配置較多則將啟動應用所必需的部分單獨初始化。

四、除錯

1、在Studio的日誌窗,輸入Tag關鍵字:Display
則可以看到應用自點選圖示至渲染出畫面所耗時間。下圖即為個人除錯應用優化前後的Display時間:
優化前:
這裡寫圖片描述
優化後:
這裡寫圖片描述

2、精確除錯某段程式碼執行時間
在需要測算執行時間的那段程式碼前後加上:

        Debug.startMethodTracing("name");
        /** start 需要測算執行時間的程式碼段*/
...... /** end 需要測算執行時間的程式碼段*/ Debug.stopMethodTracing();

然後執行App後會在裝置的SD卡根目錄下生成name.trace檔案,用Android Studio可以將此檔案開啟,從而得到這段程式碼的執行時間詳細引數,例如下:

這裡寫圖片描述

圖中上半部分為各方法執行時間統計圖,下方為各個方法詳細的執行時間引數(包含其子方法),其中各列引數含義:

Name Invocation Count Inclusive Time (us) Exclusive Time (us)
方法名 方法呼叫次數 該方法及其呼叫的子方法的耗時 該方法(不包含呼叫的子方法)的耗時

.
.
.

以上,歡迎補充。