Android Appを最適化してホワイトスクリーンを起動
8199 ワード
問題の説明
Android Appの開発時間が長くなるにつれて、プロジェクトの機能やサードパーティのライブラリが多くなり、apkの体積も大きくなります.ユーザーがアプリケーションを開くと、白画面の時間も長くなり、悪い使用体験をもたらします.ユーザーがアプリケーションアイコンをクリックすると、白画面ではなく指定されたコンテンツをすぐに表示するにはどうすればいいのでしょうか.
ソリューション
ほとんどのAppは、開くたびに
Activity:
このActivityには何かが欠けているようですが...はい、
ここでの
この时、私たちはまた私たちのAppを冷やして起動して、あなたがアイコンをクリックした瞬間、
質疑応答
Q.なぜこのようにして、
まとめ
では、私たちのさっきの操作と上の「疑問解答」を振り返ってみると、私たちがテーマに書いた
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.Light
、android:Theme.Light
の中で、私たちはついに- @color/background_material_light
を発見して、corsの中にフォローし続けます:#fffafafa
、この色の値、私たちの白いスクリーンの時の色の値です!まとめ
では、私たちのさっきの操作と上の「疑問解答」を振り返ってみると、私たちがテーマに書いた
- @drawable/splash_bg
の意味は、アプリのコールドスタート時の白い画面を自分の画像で置き換えるためであり、なぜ新しいFastStartAppActivity
がsetContentView(...)を必要としないのか、皆さんも知っていると思います.