誰もが知っているように、多くのAndroidアプリは、最初Activity
にフォーカスが当たる前に、ごく短時間、白い画面を表示します。この問題は、次の場合に発生します。
グローバル
Application
クラスを拡張し、そこで主要な初期化を実行するAndroidアプリ。Application
オブジェクトは常に最初のオブジェクトActivity
(デバッガーで確認できる事実)の前に作成されるため、これは理にかなっています。これが私の場合の遅延の原因です。スプラッシュスクリーンの前にデフォルトのプレビューウィンドウを表示するAndroidアプリ。
android:windowDisablePreview = "true"
ここでは明らかに設定は機能しません。また、[残念ながら]スプラッシュスクリーンはを使用しているため、スプラッシュスクリーンの親テーマをここでTheme.Holo.NoActionBar
説明するように設定することもできません。ActionBar
一方、Application
クラスを拡張しないアプリは、起動時に白い画面を表示しません。
問題は、理想的には、Application
オブジェクトで実行される初期化は、最初のものが表示される前に行われる必要Activity
があることです。だから私の質問は、オブジェクトを使用せずにアプリの起動時にこれらの初期化を実行するにはどうすればよいApplication
ですか?おそらくThread
またはを使用しているService
と思いますか?
これは考えるべき興味深い問題です。NoActionBar
私のスプラッシュ画面には実際にはActionBar
いくつかの無関係な理由のために悲劇的にあるので、私は(テーマを設定することによって)通常の方法でそれをバイパスすることはできません。
注意:
私はすでに次の質問に言及しました:
参照:
Application
クラスからすべての初期化コードを移動した後でも、これがまだ問題であることに気付くかもしれません。これは、Androidの新しいバージョンのアプリを「コールドスタート」する方法が原因です。Googleは実際に今年Google I / Oでの起動時間に対処しましたが、私が覚えていることからNで修正されます。それまでの間、Googleが「ブランド化された起動画面」と呼ぶものを確認する必要があります。これを作成する方法の例を次に示します:antonioleiva.com/branded-launch-screen-最初に白い画面はもうありません;-)そして、スプラッシュスクリーンを使用しないでください-これはユーザーに迷惑です。