9

わかりました、カウントダウンで無限ループを作成する必要があります。私のコードは次のとおりです。

public void countdown() {
    if (x != null) {
        x.cancel();
    }

    x = new CountDownTimer(20000, 1000) {
        public void onTick(long millisUntilFinished) {
        }

        public void onFinish() {
            showNotification();
        }
    };
    x.start();
}

x は単なる静的 countdowntimer 変数です。問題は、上記のコードを機能させるために多くの方法を試したことです。つまり、カウントダウンが終了すると、その通知が表示され、再び開始する必要があります....しかし、それを行う方法が見つかりません.

4

8 に答える 8

16

これがあなたを助けることを願っています。

public void countdown(){
    if (x != null) {
        x.cancel();
    }
    x = new CountDownTimer(20000, 1000) {
       public void onTick(long millisUntilFinished) {
        }
       public void onFinish() {
           showNotification();
            x.start();
        }
    };
 }
于 2011-11-26T11:23:13.407 に答える
5

彼が終わったときにあなたのタイマーを再開することです:)このように:

   x = new CountDownTimer(20000, 1000) {
            public void onTick(long millisUntilFinished) {
            }

            public void onFinish() {
                showNotification();
                start();// here, when your CountDownTimer has finished , we start it again :)
            }
        };
        x.start();
于 2011-11-26T11:58:16.080 に答える
3

通常のタイマーを使用しないのはなぜですか?これは、cancel()を呼び出すまで、指定された間隔で繰り返されます。

public void countdown() { 
    if (x != null) {
        x.cancel();
    }

    x = new Timer("timerName");
    x.schedule(_timerTask, 0, 20000);
}

private static final TimerTask _timerTask = new TimerTask() {
    @Override
    public void run() {
        showNotification();
    }
};
于 2011-11-26T13:43:58.313 に答える
1

while ループを使用するだけです。 「処理」が完了すると、無限に再開されます。
while (true) {
// do stuff
}

于 2011-11-26T11:20:45.970 に答える
1

タイマーを動かし続けるには

<countdowntime>.start(); 

onfinishブロックで

于 2013-07-09T14:07:43.660 に答える