2016-08-30 8 views
1

私はAndroidアプリを持っています。私はそうAndroidアプリの起動に多くの時間がかかります

final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Log.i(SplashActivity.APP_NAME, "Executing post-delayed code"); 
     } 
    , 100); 

を追加しましたスプラッシュ画面のonCreate()方法では、私が期待するもののonCreateが終了した後に、このコードは100ミリ秒後に実行されますということです。

しかし、私はポスト遅れたコードを実行するために)私のアプリは、のonCreate(後に3秒を取っていることがわかります(また、UIは3seconds後に表示されます):なぜアプリができ

08-30 19:00:45.614 4559-4559/com.example.my I/My Example: OnCreate is exited 
08-30 19:00:45.621 4559-4683/com.example.my D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 
08-30 19:00:45.654 4559-4683/com.example.my I/Adreno: QUALCOMM build     : 166ada0, Ifd751822f5 
                  Build Date      : 01/26/16 
                  OpenGL ES Shader Compiler Version: XE031.06.00.05 
                  Local Branch      : AU12_SBA 
                  Remote Branch     : 
                  Remote Branch     : 
                  Reconstruct Branch    : 

**08-30 19:00:45.662** 4559-4683/com.example.my I/OpenGLRenderer: Initialized  EGL, version 1.4 

**08-30 19:00:48.646** 4559-4559/com.example.my I/My Example: Executing post-delayed code 

は、誰かが私に教えてくださいすることができonCreate()の3秒後にポスト遅延コードとUIを表示して表示を開始しますか?

この時間を最適化する方法のヒントを教えてください。

もう1つの質問は、onStart()/ UIが表示された後にhandler.postDelayed()が実行されますか?

+0

あなたはonCreateが終了していますか? – lelloman

+0

私はその約100ミリ秒を取ると仮定します。 'onCreate()'の先頭にログを入れてみてください。 – Shaishav

+0

@Shaishavは、onCreateが終了したときにログを更新しました。 –

答えて

2

デフォルトのアンドロイドスタジオのテンプレートでもタイムアウト時間が300ミリ秒に設定されているため、少し大きなタイムアウトを追加することを検討してください。 あなたはアンドロイドフルスクリーンアプリケーションテンプレートも

/** 
* Some older devices needs a small delay between UI widget updates 
* and a change of the status and navigation bar. 
*/ 
private static final int UI_ANIMATION_DELAY = 300; 

くらいでコメントを見ることができますAndroidはメインスレッドでそれを描画し、あなたのUIが大幅に入れ子のレベルまたはハード描画コードを持っている場合、それはまた、パフォーマンスが低下することができますので、あなたのレイアウトに依存します。

+0

レイアウトに依存します。 KBのスプラッシュスクリーンの背景イメージをロードしていました。 –

関連する問題