天天看點

啟動速度優化_Android 應用啟動速度優化方向的一個小總結

啟動速度優化_Android 應用啟動速度優化方向的一個小總結

項目 App 的冷啟動速度實在太慢了。下面把優化的手段大概總結一下,要說明一點的是,每個項目結構都不一樣,實質優化的内容也不一樣,但是可以說優化的思路是一樣的。

Application 優化

  • onCreate 放置的 sdk 或者 單利初始化的東西一定要嚴格克制,仔細思考是否有必要提前初始化或者去拉取資料。因為現在大部分應用都是有3s左右的閃屏時間,這個時間足夠你做一些初始化的操作。
  • onCreate 裡面的一定要初始化的東西要判斷是否能夠放置線上程池中。
  • 是否一些初始化的東西,可以延遲到使用時才去進行。
  • 另外,并不是所有東西放置在子線程都是 ok 的,子線程本質上也會與主線程去競争 CPU 資源的,是以在對 App 中的線程池,可以設定稍微低一點的優先級。

SplashActivity優化

  • 白屏或者黑屏的現象一定要處理下。
  • 不要設定應用啟動頁面為透明主題,這個會讓你的 App 顯得非常慢。這一點網上資料比較多,可以搜尋查閱一下。
  • 同樣,在 SplashActivity 中耗時操作可以放在子線程,設定如果 3s 廣告是必須顯示的,可以延時執行一些操作。
  • 如果,廣告顯示是有時機限制的,比如說這次隻顯示預設的 Theme,那麼預設的 Bg 和 Button 我們是不是可以用 viewStub 來初始化?
  • 閃屏資源的是不是做了緩存?

MainActivity優化

  • 首先同樣,onCreate 是不是做了耗時操作,是不是有些初始化可以放在子線程。
  • onResume 裡面的東西是不是可以放在 onWindowsFocusOn 中,這裡才是頁面真正顯示的時候。
  • IdleHandler 的利用,等到主線程空閑的時候再執行操作。
  • 首頁布局的優化,減少複雜布局和過渡繪制優化,另外要利用好 viewStub 功能。
  • 去掉無用的老代碼,另外一些測試時候的代碼也要及時清理,類似用 trace 和 sp 記錄耗時。

優化這個東西,是階段性和長期性的,後續有什麼更好的優化,再繼續更新。