Android Appを最適化してホワイトスクリーンを起動


問題の説明
Android Appの開発時間が長くなるにつれて、プロジェクトの機能やサードパーティのライブラリが多くなり、apkの体積も大きくなります.ユーザーがアプリケーションを開くと、白画面の時間も長くなり、悪い使用体験をもたらします.ユーザーがアプリケーションアイコンをクリックすると、白画面ではなく指定されたコンテンツをすぐに表示するにはどうすればいいのでしょうか.
ソリューション
ほとんどのAppは、開くたびにSplashページをポップアップし、このSplashページをリストに設定します.
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
intent-filter>

Activity:FastStartAppActivity.javaを新規作成します.
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    startActivity(new Intent(this, SplashActivity.class));
    overridePendingTransition(0, 0);
    finish();
}

このActivityには何かが欠けているようですが...はい、setContentView(..);はありません.どうすればインタフェースを表示できますか?トピックを設定します.これは何の操作なのか、なぜそうなのかという疑問があるかもしれません.では、後で、コードを貼り続けます...res/values/styles.xmlにトピックスタイルを追加する必要があります.
<style name="FastStartTheme" parent="AppTheme">
    "android:windowBackground">@drawable/splash_bg
    "android:windowFullscreen">true
style>

ここでのandroid:windowBackground属性は、ホワイトスクリーンを置き換えるためのコンテンツであることに注意してください.最後に、リストファイルでFastStartAppActivityにこのスタイルを設定し、FastStartAppActivityを最初の起動ページに設定します.
 <activity
    android:name=".activity.FastStartAppActivity"
    android:theme="@style/FastStartTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        intent-filter>
activity>

この时、私たちはまた私たちのAppを冷やして起動して、あなたがアイコンをクリックした瞬間、FastStartThemeで設定した背景を画面に表示することができます.ここを見て、実は私たちの目的は達成したので、下を見続けなくてもいいです.もっと知りたいなら、下を見続けてもいいです.
質疑応答
Q.なぜこのようにして、FastStartAppActivityのうちsetContentView(R.layout.activity_fast_start_app)に直接、activity_fast_start_appにbackgroundを設定するのも同じではないでしょうか.A:もしこの疑問があったら、以前問題を解決しなかった時と同じではないでしょうか.まず、なぜ白い画面が現れたのかを知っておく必要があります.私たちがコールドスタートを適用すると、多くの初期化作業が行われるため、これらの初期化作業はデフォルトでactivityを起動するsetContentView(..)android:windowBackgroundの前に完了します.そのため、初期化の過程で、Viewをレンダリングしていません.この初期化の時間は、白画面の時間です.この白画面は実はあなたのテーマのTheme.AppCompat.Light.NoActionBarです.私たちがデフォルトで設定したテーマについてフォローすることができます:Base.Theme.AppCompat.Light->Base.V7.Theme.AppCompat.Light->Platform.AppCompat.Light->android:Theme.Lightandroid:Theme.Lightの中で、私たちはついに@color/background_material_lightを発見して、corsの中にフォローし続けます:#fffafafa、この色の値、私たちの白いスクリーンの時の色の値です!
まとめ
では、私たちのさっきの操作と上の「疑問解答」を振り返ってみると、私たちがテーマに書いた@drawable/splash_bgの意味は、アプリのコールドスタート時の白い画面を自分の画像で置き換えるためであり、なぜ新しいFastStartAppActivityがsetContentView(...)を必要としないのか、皆さんも知っていると思います.