0

こんにちは私は次のように私のアクティビティoncreateメソッドにカウントダウンタイマーを持っています

   start1 = new CountDownTimer(level1time, 1000) 
         //timer updated every second
          {

         public void onTick(long millisUntilFinished) {
       }
    public void onFinish() {
           //switch activities
    }

          }

         .start();
    }

次に、コードの後半でstart1.cancelを呼び出します。これは、この特定のアクティビティが1回開始されたときに機能しますが、後でこのアクティビティが再度作成されると、最初のタイマーが終了したため、アクティビティは即座に切り替わります。

私の理解では、アクティビティが作成されるたびに新しいタイマーを作成する必要がありますが、そうではないようです。誰かがこの問題を解決する方法を知っていますか?

4

1 に答える 1

0

いずれの場合も、タイマーの代わりにハンドラーを使用することをお勧めします。私は通常、一定時間後に実行したいものを持つ最終的なRunnableオブジェクトを作成し、onCreate()で新しいハンドラーを作成し、postDelayed(Runnable、int)を使用して一定の遅延後にRunnableをそれに投稿します。ユーザーがアクティビティを終了した場合、またはアクティビティを実行しないようにしたい場合は、定義済みのRunnableを使用してHandler.removeCallbacks(Runnable)を呼び出すだけで、そのアクティビティの「タイマー」を停止できます。

それはあなたの質問に対する高レベルのアプローチです。Handlerクラスに慣れると、これは非常に簡単な問題になります。

于 2011-03-29T22:18:49.220 に答える