Intereting Posts
Как использовать Legacy Apache в Eclipse для поддержки Android M Настройте ActionBar на Android с помощью ActionbarSherlock и jeremyfeinstein slidemenu Как реализовать приложение VOIP с использованием пакета android.net.rtp Eclipse – Ошибки с запуском builder 'Android Package Builder' Контактная информация для Android: как получить обратную ссылку (Google) из Интернета (и, таким образом, «отменить» прежнее локальное изменение изображения) Не удалось найти com.google.firebase: firebase-core: 9.0.0 Android – Перетаскивание – Тень анимации в цель Adb Devices не могут найти мой телефон Название андроида не будет отображаться на панели инструментов Почему функция pinch-to-zoom не работает в моем Android-браузере? Как получить список доступных сетевых провайдеров? Android MediaPlayer getCurrentPosition () вызывает звук заикания Зарегистрировать идентификатор устройства непосредственно с помощью Amazon SNS IntelliJ / Android Studio: удалите ненужное использование этого. Изменение данных SimpleCursorAdapter

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

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

Solutions Collecting From Web of "Как остановить таймер в Android?"

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; } 

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

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

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

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

 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() { ... } } 

Он говорит, что таймер () недоступен на 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

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

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

Попробуй это:

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

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

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

Это код.

 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 Developer

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

 timer.cancel();