Android app啟動秒開並避免白屏或黑屏
阿新 • • 發佈:2019-02-20
本篇記錄Android 開發常見的一個優化點:冷啟動優化。冷啟動也就是應用本來沒有啟動,這時我們點選桌面圖示或者使用adb啟動應用。
問題:我們在桌面點選某些app圖示時會感覺卡頓了一下才彈出app啟動頁,或者啟動時先白屏或黑屏一會才顯示啟動頁。這樣給使用者的體驗不太好。
優化方法1:
定義一個啟動頁專用的主題:
<style name="AppStartTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowBackground">@android:color/transparent</item>
</style>
這樣啟動時會給啟動頁一個透明的主題,可以解決啟動時先白屏或黑屏一會才顯示啟動頁。但是還是會有一點卡頓的效果。可以把應用的一些非必須的初始化做延遲處理。不要在application和啟動頁的oncreate中做太多的耗時操作。
啟動時間測試方法:adb shell am start -W packageName/IndexActivity 替換自己的包名和啟動頁
優化方法2:
給啟動頁設定一個圖片做主題,這個圖片就是app啟動頁背景圖:可以直接使用圖片,也可以使用layer-list形式的佈局。推薦使用layer-list,螢幕適配好。
<style name="AppStartTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!--冷啟動時間更慢 但是點選圖示是立即開啟視覺效果--> <item name="android:windowFullscreen">true</item> <item name="android:windowBackground">@drawable/index1</item> </style>
在啟動頁的oncreate中不要再設定contentview,只使用主題中背景圖片。這種方法使用adb測試啟動時間比方法1要耗時多,但是點選圖示是立即開啟的效果,沒有卡頓也不會有白屏和黑屏。市場上一些秒開的app也是這麼做的。