Подтвердить что ты не робот

Как остановить таймер в Android?

Я разрабатываю приложение, которое отправляет сообщение на определенный номер за определенный период времени. Проблема заключается в том, что он продолжает отправлять это сообщение после этого периода времени. Как мне остановить таймер после этого определенного времени, чтобы прекратить отправку этого сообщения?

4b9b3361

Ответ 1

     CountDownTimer waitTimer;
     waitTimer = new CountDownTimer(60000, 300) {

       public void onTick(long millisUntilFinished) {
          //called every 300 milliseconds, which could be used to
          //send messages or some other action
       }

       public void onFinish() {
          //After 60000 milliseconds (60 sec) finish current 
          //if you would like to execute something when time finishes          
       }
     }.start();

чтобы остановить таймер раньше:

     if(waitTimer != null) {
         waitTimer.cancel();
         waitTimer = null;
     }

Ответ 2

и.. мы должны называть "waitTimer.purge()" для GC. Если вы больше не используете Таймер, "purge()"!! "purge()" удаляет все отмененные задачи из очереди задач.

if(waitTimer != null) {
   waitTimer.cancel();
   waitTimer.purge();
   waitTimer = null;
}

Ответ 3

В java.util.timer можно использовать .cancel(), чтобы остановить таймер и очистить все ожидающие задачи.

Ответ 4

У меня была аналогичная проблема: каждый раз, когда я нажимаю определенную кнопку, я создаю новый таймер.

my_timer = new Timer("MY_TIMER");
my_timer.schedule(new TimerTask() {
...
}

Выход из этого действия я удалил таймер:

if(my_timer!=null){
my_timer.cancel();
my_timer = null;
}

Но этого было недостаточно, потому что метод cancel() только отменил последний таймер. Старшие были проигнорированы и не переставали работать. Метод purge() не был полезен для меня. Я решил проблему просто проверить экземпляр Timer:

if(my_timer == null){
my_timer = new Timer("MY_TIMER");
my_timer.schedule(new TimerTask() {
...
}
}

Ответ 5

Он говорит, что таймер() недоступен на Android? Вы можете найти эту статью полезной.

http://developer.android.com/resources/articles/timed-ui-updates.html


Я был неправ. Доступен таймер(). Кажется, вы либо реализуете его так, как однократное действие:

schedule(TimerTask task, Date when) // Schedule a task for single execution.

Или вы отмените его после первого выполнения:

cancel()  // Cancels the Timer and all scheduled tasks.

http://developer.android.com/reference/java/util/Timer.html

Ответ 6

У меня была аналогичная проблема, и это было вызвано размещением инициализации таймера.

Он был помещен в метод, который был вызван чаще.

Попробуйте следующее:

Timer waitTimer;

  void exampleMethod() {

   if (waitTimer == null ) {
    //initialize your Timer here
    ...
   }

Метод "cancel()" отменяет только последний таймер. Старшие были проигнорированы и не перестали работать.

Ответ 7

Мы можем запланировать таймер, чтобы выполнить работу. По истечении времени, которое мы установили, сообщение не будет отправлено.

Это код.

Timer timer=new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
            //here you can write the code for send the message
        }
    }, 10, 60000);

Здесь метод, который мы вызываем,

public void scheduleAtFixedRate (задача TimerTask, длительная задержка, длительный период)

Здесь

задача: задача запланировать

delay: количество секунд в миллисекундах перед первым исполнением.

период: количество времени в миллисекундах между последующими исполнениями.

За дополнительной информацией вы можете обратиться: Разработчик Android

Вы можете остановить таймер, позвонив,

timer.cancel();