0

正確さのために Timer() を使用していますが、PostDelayed Handler と同じように動作します。1 回だけ呼び出されます。タイマーコードは次のとおりです。

    public void setWFT() {
        WFT = new Timer();
        WFT.schedule(new TimerTask() {          
            @Override
            public void run() {
                WFTTimerMethod();
            }
        }, 60000); // 60 seconds delay
    }

    private void WFTTimerMethod() {
        this.runOnUiThread(Timer_Tick);
    }

    private Runnable Timer_Tick = new Runnable() {
        public void run() {
            // My commands here
        }
    };

これは、タイマーが開始されると、60 秒後に 1 回だけ run() を呼び出します。時々、タイマーをキャンセルして遅延を更新する必要があります (「60000」の値を置き換えます)。タイマーを再び開始するには、新しい遅延値を指定して WFT() を再度呼び出してタイマーを再作成するだけです。

問題は、次を使用してタイマーをキャンセルするときです。

WFT.cancel();
WFT.purge();

タイマーが起動しない。run() は、想定されているときに実行されません。私の質問は、cancel() と purge() を使用するか、cancel() だけを使用するかということです。

ありがとう

4

2 に答える 2