App 冷啟動:給 Android 的 Activity 添加一個背景


2016/8/8 11:11:18 # 糾錯

之前寫的這篇內容的知識點有誤,給大家造成了誤導,深感抱歉。
android 中給 Activity 設置背景的方法是在 style 文件中設置 windowBackground 屬性,而非設置 background 屬性,如果你設置的是 background 屬性,那么抱歉,你可能會遇到下面所說的這種情況: Activity 的 layout 中所有布局控件的背景全變成了 background 所指定的樣式。


2016/7/11 14:06:22

最近在做項目優化,其中碰到一個問題:每次應用冷啟動的時候,會有一段時間的白屏,這種現象在低端機上更加明顯。

為了解決這個問題,我首先是想到怎么做冷啟動的優化(應用冷啟動這塊這里先不展開講,后面會單獨整理出來一篇文章)。冷啟動的優化可以從幾個方面入手,比如說:在App的Application類的onCreate方法中盡量不要做比較重的操作,包括SharedPreference文件的額初始化等。。另外,可以使應用每次不完全關閉,修改用戶返回鍵的操作,減少應用冷啟動的次數(目前微信好像就是這么做的)。

回過頭來想一下,在我目前所做的這款App中,冷啟動優化要解決的其實就是去除應用在冷啟動情況下有一段時間白屏的問題,那么,我們不妨從應用的背景圖片來考慮。

首先,設置應用第一個頁面的theme,這里我的應用第一個頁面是SplashActivity,因此,我再AndroidManifest.xml文件中添加了android:theme的屬性。

然后,自定義屬性ActivitySplashTheme。我的ActivitySplashTheme繼承原來應用的style,在原來的基礎上,我添加了一個background屬性,並設置相應的背景圖片。

<item name="android:background">@drawable/background</item>

到這里就完成了。


什么?!你說你的應用按照這樣設置之后,界面出現了意想不到的“效果”,各種布局錯亂?!

好吧,看來還是沒搞明白style的用法、以及style中background屬性的意義。

說一下我的做法吧,在上面說的那些內容修改之后還不行的情況下,我給每個控件都另外添加了background屬性

android:background="@android:color/transparent"

比如,設置TextView的background,設置ImageView屬性等(大家注意一下ImageView的background屬性和src屬性,搞清楚他們的區別,這里就不再贅述)。

以上所有的屬性設置完畢后,跑一下應用,在冷啟動的情況下,應用不會出現白屏的情況,取而代之的是預設的背景圖騙。

好啦!到這里,我針對自己項目中App啟動出現白屏的問題就已經解決了。方法可能不止一種,如果大家有其他好的方法,也希望能跟我交流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM