1. 程式人生 > >Android APP啟動時出現白屏或者黑屏

Android APP啟動時出現白屏或者黑屏

問題描述:
啟動APP時會有短暫的白屏或者黑屏,大概1~2秒後,才會顯示主介面或者顯示啟動頁。
問題原因:
開啟一個Activity時,如果這個Activity所屬的應用還沒有在執行,系統會為這個Activity所屬的應 用建立一個程序,但程序的建立與初始化都需要時間,在這個動作完成之前系統如果沒有任何反應的話,程 序初始化的時間很長,使用者可能還以為沒有點到相應的位置。為防止這種情況出現,系統在應用程式程序建立並初始化成功前會顯示一個臨時視窗也就是Starting Window,也可以稱之Preview Window。擁有的Window Type是TYPE_APPLICATION_STARTING。在程式初始化完成前顯示這個視窗,以告知使用者系統已經知道了他要開啟這個應用並做出了響應,當程式初始化完成後顯示使用者UI並移除這個視窗。之所以顯示白屏或者黑屏,是由啟動的Activity或者Application來決定的。如果使用的是Light主題,那麼就可能出現白屏;如果使用的是Black主題,那麼就可能出現黑屏。因為當設定Light或者Black主題時,Starting Window顯示的是啟動Activity的android:windowBackground屬性,所以才會出現白屏或者黑屏的情況。
解決辦法:
在style.xml檔案中為啟動的Activity設定主題,設定android:windowBackground屬性為啟動Activity顯示的閃屏圖片,這樣才有APP秒開的效果。

<style name="AppTheme.FullScreen">
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowBackground">@drawable/splash</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true
</item> </style>

然後,在清單檔案AndroidManifest.xml中,為啟動的Activity設定主題AppTheme.FullScreen。

<activity
            android:name=".activity.SplashActivity"
            android:theme="@style/AppTheme.FullScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>