Android冷啟動白屏解決方案

什么是Android應用冷啟動?

當啟動應用時,后臺沒有該應用的進程,這時系統會新創建一個新的進程分配給該應用,并且在此過程中會進行對象的初始化和繪制視圖等操作,這種啟動方式叫冷啟動。

白屏原因

在進行冷啟動時還沒加載到布局文件就顯示了Window窗口背景。

解決方案

假設一個應用啟動時默認啟動引導頁

  1. 在styles.xml中實現窗口透明樣式

    注意:若無引導頁就直接在AppTheme里實現這個屬性,若有引導頁且引導頁繼承的是AppCompatActivity則需要讓樣式指定parent為Theme.AppCompat的樣式,否則會報錯,這里的AppTheme是創建應用時自動創建的應用樣式。

    <style name="GuideTheme" parent="AppTheme">
            <item name="android:windowIsTranslucent">true</item>
    </style>
    
  2. 在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. 圖片可能出現變形

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,287評論 25 708
  • 1.什么是冷啟動 冷啟動其實就是應用第一次啟動,或者說啟動之后后臺被殺掉了又重新啟動app的情況.比如小米通過菜單...
    不灬語閱讀 2,180評論 8 15
  • 內容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 46,884評論 22 665
  • 在網上搜索了許多關于app啟動白屏的文章大致分為兩類 第一種是在style的app的theme 里設置 true ...
    licue閱讀 5,768評論 0 0
  • 今天早上吳莎莎老師給我們做關于寫作方面的講座,首先她引用了微信上的一個情景:大雁飛過,落霞很美,有文化的人會說“落...
    紅俠女閱讀 2,982評論 0 1