0

私は、イベントで一種の再起動を取得するアプリに取り組んでいます。最初の実行では、タイマーは完全に機能します (1 秒 = 1 増分)。しかし、次の実行時 (1 秒 = 2 増分)、3 回目の実行時 (1 秒 = 4 増分) など... 新しい TimerTask オブジェクトの作成に問題があると思います。しかし、それを処理する方法がわからない。提案または代替案はありますか?

コードスニペット:

Timer t = new Timer();

void timerMethod()
    {
      t.schedule(new TimerTask() {
      public void run() {
                timerInt++;
                //TODO bug in timer in consecutive runs. To confirm, see log
                Log.d("timer", "timer " + timerInt);
                /*  runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        timerDisplayPanel.setText( timerInt + " Sec");
                    }
                });*/
            }
        }, 1000, 1000);

    }
4

2 に答える 2

2

timerMethod()何度も電話をかけているようです。

これを 3 回呼び出すと、3 つのタイマー タスクがスケジュールされていることになります。つまり、すべてのタイマー タスクが 1 秒ごとに起動し、すべてがインクリメントされますtimerInt。複数回呼び出す必要がないか、追加する前に既存のタイマー タスクをキャンセルする必要があります。

そうでない場合は、何が起こっているかを示す短いが完全なプログラムを提供してください。現時点では、コンテキストはかなりあいまいです。

于 2012-06-19T11:19:04.640 に答える
0

あなたが提供したスニペットは正しく機能しています

  • 1秒1刻み
  • 2秒2刻み
  • 3秒3刻み

したがって、おそらく問題はコードの別の場所にあります。

于 2012-06-19T11:30:54.170 に答える