「MainActivity」というメインクラスがあり、アプリで数回起動しています。
private static CountDownTimer timer;
private static final long startTime = 15 * 1000;
private static final long interval = 1 * 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer = new StageCountDownTimer(startTime, interval);
}
private class StageCountDownTimer extends CountDownTimer {
public StageCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
//STARTTING NEW ACTIVITY
}
@Override
public void onTick(long millisUntilFinished) {
}
}
カウントダウンが終了する前に、ユーザーがこのアクティビティを閉じて、このアクティビティに再び戻る必要がある場合があります。そして、新しいカウントダウンが開始されますが、古いonFinish()
カウントダウンは前のカウントダウンが終了したときにコードを実行します。このコードを一度開始すると、すべてがうまく機能します。アクティビティを終了した後、このタイマーをキャンセル/破棄/破棄する方法は? 私は試してみましたがtimer.cancel()
、何も起こりません。
編集
CountDownTimer タイマーをパブリックとして設定し、他のアクティビティで MainActivity.timer.cancel() を使用することで問題を解決したと思います