Android性能優化(一):APP啓動優化

Android性能優化(一):APP啓動優化

App啓動的方式有三種:

  1. 冷啓動:App沒有啓動過或App進程被killed, 系統中不存在該App進程, 此時啓動App即爲冷啓動。
  2. 熱啓動:熱啓動意味着你的App進程只是處於後臺, 系統只是將其從後臺帶到前臺, 展示給用戶。
  3. 介於冷啓動和熱啓動之間, 一般來說在以下兩種情況下發生:
    (1)用戶back退出了App, 然後又啓動, App進程可能還在運行,但是activity需要重建。
    (2)用戶退出App後, 系統可能由於內存原因將App殺死, 進程和activity都需要重啓,但是可以在onCreate中將被動殺死鎖保存的狀態(saved instance state)恢復。

這裏主要針對冷啓動進行優化。

一、先來看看冷啓動的流程:

  1. Zygote進程中fork創建一個新的進程。
  2. 先創建和初始化Application類。
  3. 創建和初始化Launch Activity(onCreate onMesure onLayout,ondraw)。
  4. 調用setContetView方法後,將view添加到DecorView中,調用view的measuer/layotu/draw顯示到界面上。

二、冷啓動優化:

優化之前先說如何查看應用啓動時間,方便進行對比:

  • 第一種方法:手機連接電腦,打開Android Studio,查看Logcat打印出來信息,篩選關鍵字Displayed就可以看到應用啓動時間。如下圖:
    在這裏插入圖片描述

  • 第二種方法:使用adb shell命令來啓動應用並查看啓動時間adb shell am start -W [packageName]/[packageName.launchActivity] 如下圖:
    在這裏插入圖片描述
    優化方法:

  • 針對Application的,不要在Application中進行業務操作和耗時操作,不要以靜態變量的方式在Application中保存數據。

  • 針對Launch Activity,不要在Activity的onCreate方法進行耗時操作,如有必要則在線程中操作或者延時加載。

  • 針對Launch Activity的View的繪製,減少Activity佈局view的層級,最好不要超過4層,減少View測量繪製的時間。

推薦使用下面這種延時加載,在窗口完成以後進行加載,這裏面的run方法是在onResume之後運行的。

getWindow().getDecorView().post(new Runnable() {
    @Override
    public void run() {
        //TODO something
    }
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章