2017-03-29 15 views
0

デバイスでデバッグ用にアプリケーションを開くと、約1〜2秒間空白のページが表示され、スプラッシュ画面が表示されます。私はこの問題について、アンドロイドのデベロッパーのウェブサイトで、アプリケーションのサブクラスでのアプリの初期化が原因である可能性があると述べています。アクティビティの起動時に白い空白のウィンドウが表示される

私のアプリケーションの拡張クラスコードはここにある:

public class MyApplication extends Application{ 

private static ApplicationComponent mApplicationComponent; 

@Override 
public void onCreate() { 
    super.onCreate(); 

    FacebookSdk.sdkInitialize(getApplicationContext()); 

    if (mApplicationComponent == null){ 
     mApplicationComponent = DaggerApplicationComponent.builder() 
       .applicationModule(new ApplicationModule(this)).build(); 
    } 
} 

public static ApplicationComponent providesApplicationComponent(){return Preconditions.checkNotNull(mApplicationComponent);} 

} 

私のスプラッシュ画面コード: -

public class SplashActivity extends AppCompatActivity { 

@BindView(R.id.splash_screen) 
ImageView mSplashScreen; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash); 

    ButterKnife.bind(this); 
    Picasso.with(this).load(R.drawable.bg_splash_screen).fit().centerCrop().into(mSplashScreen); 
    SharedPreferences mSharedPreferences = getSharedPreferences(Constants.PREFERENCE,MODE_PRIVATE); 
    if (mSharedPreferences.getBoolean(Constants.LOGGEDIN,false)){ 
     Intent homeIntent = new Intent(this, HomeActivity.class); 
     openPage(homeIntent); 
    } else { 
     Intent signupIntent = new Intent(this, SignUpActivity.class); 
     openPage(signupIntent); 
    } 
} 

private void openPage(final Intent intent){ 

    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      startActivity(intent); 
      finish(); 
     } 
    },1200); 
} 

} 

私は自分のアプリケーションクラスでのみ、この2つの初期化をやっています。これは問題ですか?もしそうであれば、この問題を解決する方法。

+0

デバッグ用で、初めての場合のみですか? – X3Btel

+1

スプラッシュアクティビティの投稿コード – Rahul

+0

このリンクはお役に立ちましたか?http://stackoverflow.com/questions/20546703/how-to-fix-white-screen-on-app-start-up – Rahul

答えて

0

をリリースモードを構築したり、インスタントファイル名を指定して実行を無効にしてください、私はインスタントの実行を無効にするにはインスタントの実行に

を無効にすることをお勧めしたいと思います: は、設定や環境設定]ダイアログボックスを開きます。 ビルド、実行、展開>インスタント実行に移動します。 [インスタント実行を有効にする]の横にあるチェックボックスをオフにします。

0

私は同じ問題を持っていた、多くの研究の後、私は以下のコードを追加styles.xml

<item name="android:windowDisablePreview">true</item> 

に無効にプレビューが起動するインスタントアプリケーションを削除していますが、画面をスプラッシュしているので、これは動作するはずです。

希望すると、あなたも同様に役立ちます。

+0

しかし、これはお勧めできませんアンドロイドの開発者サイト。 – sasuke

+0

スプラッシュ画面があるので、この行を使用すると、インスタントアプリケーションの起動だけが削除されるため、この行を使用すると問題ありません。 – Johny

関連する問題