1. 程式人生 > >Android app啟動秒開並避免白屏或黑屏

Android app啟動秒開並避免白屏或黑屏

本篇記錄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也是這麼做的。