什么是Android應(yīng)用冷啟動(dòng)悦析?
當(dāng)啟動(dòng)應(yīng)用時(shí)寿桨,后臺(tái)沒(méi)有該應(yīng)用的進(jìn)程,這時(shí)系統(tǒng)會(huì)新創(chuàng)建一個(gè)新的進(jìn)程分配給該應(yīng)用,并且在此過(guò)程中會(huì)進(jìn)行對(duì)象的初始化和繪制視圖等操作亭螟,這種啟動(dòng)方式叫冷啟動(dòng)钮糖。
白屏原因
在進(jìn)行冷啟動(dòng)時(shí)還沒(méi)加載到布局文件就顯示了Window窗口背景。
解決方案
假設(shè)一個(gè)應(yīng)用啟動(dòng)時(shí)默認(rèn)啟動(dòng)引導(dǎo)頁(yè)
-
在styles.xml中實(shí)現(xiàn)窗口透明樣式
注意:若無(wú)引導(dǎo)頁(yè)就直接在AppTheme里實(shí)現(xiàn)這個(gè)屬性价匠,若有引導(dǎo)頁(yè)且引導(dǎo)頁(yè)繼承的是AppCompatActivity則需要讓樣式指定parent為T(mén)heme.AppCompat的樣式茴晋,否則會(huì)報(bào)錯(cuò),這里的AppTheme是創(chuàng)建應(yīng)用時(shí)自動(dòng)創(chuàng)建的應(yīng)用樣式扁掸。
<style name="GuideTheme" parent="AppTheme"> <item name="android:windowIsTranslucent">true</item> </style>
-
在AndroidManifest.xml文件中找到引導(dǎo)頁(yè)的聲明翘县,并加上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>
?
設(shè)置后啟動(dòng)感覺(jué)略有延遲?
不用擔(dān)心谴分,這是因?yàn)閱?dòng)時(shí)Window背景為透明的锈麸,實(shí)際上應(yīng)用已經(jīng)啟動(dòng)了,若還是覺(jué)得不爽的話可以直接將引導(dǎo)頁(yè)的窗口背景設(shè)置為引導(dǎo)頁(yè)的圖片牺蹄。
<style name="GuideTheme" parent="AppTheme">
<item name="android:background">@drawable/splash</item>
<item name="android:windowBackground">@drawable/splash</item>
</style>
注意:
1. background與windowBackground效果一樣
2. 圖片可能出現(xiàn)變形