1. 程式人生 > >Android 冷啟動白屏問題

Android 冷啟動白屏問題

點選上面藍色字型關注“IT大飛說”

置頂公眾號(ID:ITBigFly)第一時間收到推送

女神.jpg

今天把玩公司App發現了一個有趣的現象。啟動app白屏。之前沒太留意過;在參照大廠App解決白屏的方案後。簡單彙總一下。

前言

冷啟動:App第一次啟動的時候會載入一個Application程序,首先會建立和初始化Appliation類,然後在載入Activity。
熱啟動:利用後臺已經擁有的程序,從而避免了Application的載入。直接去載入Activity。

解決白屏的方案大致有以下四種

  • 加入動畫
  • 使用佔位圖
  • 使用圖片
  • 使用windowDisablePreview屬性

這裡我就描述一下使用佔位圖和windowDisablePreview屬性

windowDisablePreview屬性

<style name="SplashTheme" parent="AppTheme">
        <item name="android:windowDisablePreview">true</item>
 </style>

在AndroidManifest中設定主Activity的theme值,在主Activity中還原。

@Override
    protected void onCreate
(@Nullable Bundle savedInstanceState) { setTheme(R.style.AppTheme); getWindow().setBackgroundDrawableResource(R.drawable.main_splash_bg); super.onCreate(savedInstanceState); }

執行後發現啟動App延遲幾秒後跳轉到主Activity(有點類似掌上英雄聯盟,會讓使用者誤以為是自己手機的問題)。

使用佔位圖

  <style name="SplashTheme"
parent="AppTheme"> <item name="android:windowBackground">@drawable/shape_launch</item> <item name="android:windowFullscreen">true</item> </style>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:opacity="opaque">

    <item android:drawable="@android:color/white"/>
    <item>
        <bitmap
            android:src="@mipmap/main_splash_bg"
            android:gravity="fill" />
    </item>

</layer-list>

使用windowBackground屬性來完成其他操作同windowDisablePreview屬性的設定。執行後發現明顯白屏問題得到有效解決。

參考文獻


歡迎掃碼關注我的公眾號