14

一定時間後にアクションを実行するためにpostDelayed、メソッドを使用しています。Handler

private static int time_to_wait = 2000;

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  public void run() {
    // Make Action
  }
}, time_to_wait);

待機時間の途中で、処理結果のために残りのミリ秒の値を変更したいのですが、 1000ミリ秒待機したとしましょう。もう一度2000からカウントを開始したいので、time_to_wait値を設定します2000までですが、var値(2000)time_to_waitのみを取り、値を他の値に変更してもその時間を待つだけなので、それはカウントされません。

4

3 に答える 3

29

これは、ハンドラーによって表示されるランナブルを簡単に作成し、ハンドラーを静的メンバーとして作成することで実現できます。最後に、ハンドラーを停止したい場合は、作成したランナブルのコールバックを削除するだけです。コールバックを削除して再度割り当てるには:

Runnable myRunnable = new Runnable() {
    @Override
    public void run() {
        // your code here
    }
};

public static Handler myHandler = new Handler();
private static final int TIME_TO_WAIT = 2000;

public void start() {
    myHandler.postDelayed(myRunnable, TIME_TO_WAIT);
}

public void stop() {
    myHandler.removeCallbacks(myRunnable);
}

public void restart() {
    myHandler.removeCallbacks(myRunnable);
    myHandler.postDelayed(myRunnable, TIME_TO_WAIT);
}
于 2016-08-01T14:33:02.693 に答える
0

あなたはただ試すことができます

handler.removeMessage(what)
handler.sendMessageDelayed(time_to_wait + INTERVER);

最初にメッセージを削除してから新しいメッセージを送信する必要があるたびに。

于 2014-04-03T14:06:46.227 に答える