0

私は次のように活動の時限タスクを適切に実行しています。ただし、アクティビティonResumeの場合、「タイマータスクはすでにスケジュールされています」という例外がスローされます。タスクが実行されたらタイマーをキャンセルします。それを解決する方法は?ありがとうございました

final Runnable setButton = new Runnable() {
        public void run() {
            myClass.aBridge.button_back.setVisibility(View.INVISIBLE);
                timer.cancel();
        }
    };

    TimerTask task = new TimerTask(){
        public void run() {
            webPush.this.runOnUiThread(setButton);
        }
    };

    @Override
    protected void onResume() {
        super.onResume();

            timer = new Timer();
            timer.schedule(task, 5000);

    }

タスクは、onResumeの前に次のように1回呼び出されます。

        timer = new Timer();
        timer.schedule(task, 5000);
4

1 に答える 1

2

timerTaskインスタンスごとにtimer.schedule()を呼び出すことができるのは1回だけです。スケジュールする前に、新しいインスタンスを作成します。

編集:コードの場合、定義した時点でTimerTaskメンバー変数を初期化しないでください。代わりに、スケジュールする直前に、onResume()で新しいインスタンスを作成します。

于 2012-10-05T13:50:43.137 に答える