1

アプリケーションのスプラッシュ画面を作成しました。5 秒後に、以下のコードを使用して次のアクティビティを開始します。今私の問題は、ユーザーが 5 秒が経過する前に現在のアクティビティから離れた場合、5 秒が経過するとすぐに次のアクティビティ (私の場合は InfoActivity) が前面に出てくることです。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.launch);
    new Handler().postDelayed(new Runnable() {

        public void run() {
            final Intent mainIntent = new Intent(LaunchActivity.this, InfoActivity.class);
            LaunchActivity.this.startActivity(mainIntent);
            LaunchActivity.this.finish();
        }
    }, 5000);
}
4

2 に答える 2

1

変数を使用できます

shouldNavigate=true;

元のアクティビティのonDestroy()メソッドで設定を解除したこと。

onDestroy() {
    shouldNavigate=false;
    [...]
}

postDelayed-run()-メソッドで、次にチェックします

if(shouldNavigate) {...}
于 2012-10-29T13:35:20.600 に答える
0

この手順は私のために働いた。

フラグ=false;

runnable = new Runnable() {
    public void run() {

        if(!flag) {
            final Intent mainIntent = new Intent(LaunchActivity.this, InfoActivity.class);
            LaunchActivity.this.startActivity(mainIntent);
            LaunchActivity.this.finish();
            }
        }
    };
handler = new Handler();
handler.postDelayed(runnable, 5000);

onPause() {
super.onPause();
flag = true;
handler.removeCallbacks(runnable);
}

onRestart() {
super.onRestart();
flag = false;
handler.postDelayed(runnable, timeOfPause-timeOfCreate);
}
于 2012-11-01T11:38:00.437 に答える