什么是Android應用冷啟動?
當啟動應用時,后臺沒有該應用的進程,這時系統會新創建一個新的進程分配給該應用,并且在此過程中會進行對象的初始化和繪制視圖等操作,這種啟動方式叫冷啟動。
白屏原因
在進行冷啟動時還沒加載到布局文件就顯示了Window窗口背景。
解決方案
假設一個應用啟動時默認啟動引導頁
-
在styles.xml中實現窗口透明樣式
注意:若無引導頁就直接在AppTheme里實現這個屬性,若有引導頁且引導頁繼承的是AppCompatActivity則需要讓樣式指定parent為Theme.AppCompat的樣式,否則會報錯,這里的AppTheme是創建應用時自動創建的應用樣式。
<style name="GuideTheme" parent="AppTheme"> <item name="android:windowIsTranslucent">true</item> </style>
-
在AndroidManifest.xml文件中找到引導頁的聲明,并加上android:theme屬性
<activity android:name=".GuideActivity" android:theme="@style/GuideTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
?
設置后啟動感覺略有延遲?
不用擔心,這是因為啟動時Window背景為透明的,實際上應用已經啟動了,若還是覺得不爽的話可以直接將引導頁的窗口背景設置為引導頁的圖片。
<style name="GuideTheme" parent="AppTheme">
<item name="android:background">@drawable/splash</item>
<item name="android:windowBackground">@drawable/splash</item>
</style>
注意:
1. background與windowBackground效果一樣
2. 圖片可能出現變形