MainActivity でタッチが検出されない場合、2 分ごとに実行される SplashScreenActivity があります。SplashScreenActivity で「開始」ボタンが押されると、MainActivity が開始されます。
私の問題は、SplashScreenActivity で [開始] ボタンを押すと、MainActivity の新しいインスタンスが毎回作成されるため、ライブラリが読み込まれ、毎回 (OnCreate() で) 初期化されることです。これにより、アプリケーションの速度が大幅に低下し、ボタンが押されたときに遅延が発生します。アプリケーションが最初に起動されたときに一度だけ実行したい。
使ってみました
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo / company
*/
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(SplashScreen.this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
// close this activity
finish();
}
}, SPLASH_TIME_OUT);
...インテントが開始されたとき、私のライブラリと MainActivity の OnCreate() での初期化がまだ再度実行されています。
SplashScreenActivity で「開始」ボタンが押されると、次のメソッドが実行されます。
public void startIntent(View v){
Intent i = new Intent(SplashScreen.this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
何か助けはありますか?
現在、次の行があります (setFlags を取り出したもの):
Intent intent = new Intent(Email.this, MainActivity.class);
startActivity(intent);
それでも MainActivity の OnCreate() は、アクティビティが開始されるたびに呼び出されています。
したがって、次のように設定すると、次のことがわかりました。
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
新しいインスタンスを作成せずに MainActivity に正常に戻ることができます。
詳細については、ここをクリックしてください。