1. 程式人生 > >解決啟動白屏問題

解決啟動白屏問題



一般情況下 我們在啟動APP的時候,螢幕會出現一段時間的白屏或者黑屏,不同的裝置可能白屏黑屏顯示的時間長短不同,裝置硬體較差的時間都會比較長,這顯然影響使用者體驗。現在我們來分析這個問題產生的原因。

當我們在啟動一個應用時,系統會去檢查是否已經這樣存在一個程序,如果沒有則表示系統對應用進行冷啟動,系統和APP本身都有很多工作需要處理。首先系統的服務會先檢查startActivity中的intent的資訊,然後在去建立程序,最後才是執行啟動Acitivy的操作。而我們上面提到的顯示白黑屏的問題,就是在這段時間內產生的。

系統在繪製頁面載入佈局之前,首先會初始化視窗(Window),而在進行這步操作時,系統會根據我們設定的Theme來指定它的Theme主題顏色。Window佈局的頂層是DecorView,StartingWindow顯示一個空DecorView,我們在Style中的設定就決定了顯示的是白屏還是黑屏。

解決方法
瞭解上面的原因後,既然黑白屏是更具我們設定的Theme來決定了,那我們就可以直接從啟動頁的Theme入手,解決這個問題。

1.在AndroidManifest檔案中設定:

        <activity
android:name=".SplashActivity"android:screenOrientation="portrait"android:theme="@style/Theme.MyAppTheme">
            <intent-filter>
                <actionandroid:name="android.intent.action.MAIN"
/>
<categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>

2.在styles檔案中定義:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item
name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:textCursorDrawable">@drawable/cursor</item> <item name="android:listDivider">@drawable/recycler_divider_bg</item> </style> <style name="Theme.MyAppTheme" parent="AppTheme"> <item name="android:windowNoTitle">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowBackground">@drawable/launchimage</item> <item name="android:windowFullscreen">true</item> </style>

如上,我們給啟動頁設定一個全屏的背景圖片,這樣就不用顯示預設的主題顏色了。
按照以上配置,這樣就能避免白屏問題了。