Android冷啟動白屏解決方案

1.什么是冷啟動

冷啟動其實就是應(yīng)用第一次啟動,或者說啟動之后后臺被殺掉了又重新啟動app的情況.比如小米通過菜單鍵殺掉應(yīng)用后臺,重新啟動app.

應(yīng)用冷啟動的時候其實會在Application做一些初始化工作,大部分第三方都是在Application初始化的.初始化完才會啟動SplashActivity做初始化工作,然后才是進入MainActivity.這其中看起來很簡單,其實可以對app的體驗優(yōu)化做很多文章...

2.冷啟動為什么會有一段白屏

  1. 系統(tǒng)本身加載帶來的耗時

  2. Application初始化工作.其實上面已經(jīng)說了,當應(yīng)用冷啟動的時候Application先做初始化工作,導(dǎo)致了SplashActivity無法及時初始化,也就沒東西顯示出來.

  3. SplashActivity的OnCreate中存在耗時操作,或者布局過于復(fù)雜導(dǎo)致布局解析耗時過久.

3.解決辦法

  1. 優(yōu)化Application中的邏輯.使用異步加快進入SplashActivity,用事務(wù)總線(Eventbus,otto)延遲加載.

  2. 使用異步處理SplashActivity的OnCreate中的邏輯

  3. 但是這種處理其實還是會有一小段白屏或者黑屏,這是系統(tǒng)本身初始化工作導(dǎo)致的,無法避免...那么為什么QQ,微信不會呢?

這時候我們只需要給啟動頁添加一個主題Theme

<style name="StartAppTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowFullscreen">true</item>    //設(shè)置滿屏,沒有狀態(tài)欄,不需要可去掉
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@drawable/ic_welcome</item>  //設(shè)置歡迎頁圖片
        <item name="android:windowContentOverlay">@null</item>
</style>
 <activity
            android:name=".activity.WelcomeActivity"
            android:theme="@style/StartAppTheme"          //就是上面那個主題
            >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容