1

TIME = 0、ユーザーは 10 秒後にフラグを設定するメソッドを呼び出します。(でTIME = 10)

ユーザーがメソッドを再度呼び出した場合TIME = 2、フラグはTIME = 10ではなく に設定する必要がありTIME = 12ます。

boolean myFlag; // initializes to false
private Timer timer;

public void setFlag() {
    // remove old timer if there was one
    if (timer != null) { timer.cancel(); timer = null; }

    // set the new timer
    timer = new Timer();
    TimerTask tt = new TimerTask() {
        @Override
        public void run() { myFlag = true; }
    };
    timer.schedule(tt, 10000);
}

この「更新されたスケジュール時間」モデルを実装するためのよりクリーンな方法はありますか? 例は高く評価されます。

4

1 に答える 1

-1

単純に同じままにしておきますが、少し変更しました。
変数は、最初に使用される近くで宣言および初期化する必要があるため、常に変数を宣言します。

public void setFlag() {
    Timer timer;
    timer = new Timer();
    // remove old timer if there was one
    if (timer != null) { timer.cancel(); }

    // set the new timer
    TimerTask tt = new TimerTask() {
        @Override
        public void run() { setFlag(); }
    };
    timer.schedule(tt, 10000);
}
于 2013-03-20T13:53:52.993 に答える