Android – периодический запуск метода с использованием вызова postDelayed()Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android – периодический запуск метода с использованием вызова postDelayed()

Сообщение Anonymous »

У меня есть ситуация в приложении Android, когда я хочу начать сетевую активность (отправку некоторых данных), которая должна выполняться каждую секунду. Я добиваюсь этого следующим образом:

В onCreate() у меня есть код:

Код: Выделить всё

tv = new TextView(this);
tv.postDelayed(sendData, 1000);
Функция sendData():

Код: Выделить всё

   Handler handler = new Handler();
private Runnable sendData=new Runnable(){
public void run(){
try {
//prepare and send the data here..
handler.removeCallbacks(sendData);
handler.postDelayed(sendData, 1000);
}
catch (Exception e) {
e.printStackTrace();
}
}
};
Проблема возникает следующим образом: когда пользователь нажимает кнопки «Назад» и приложение выходит (пользовательский интерфейс исчезает), функция sendData() все равно выполняется, чего я и хочу. Теперь, когда пользователь перезапускает приложение, мой onCreate() вызывается снова, и я вызываю sendData() дважды в секунду. Так продолжается. Каждый раз, когда пользователь выходит и начинает снова, происходит еще один sendData() в секунду.

Что я делаю не так? Это мой новый Handler(), создающий проблему? Каков наилучший способ справиться с этим? Мне нужен один вызов sendData() в секунду, пока пользователь не выйдет из приложения (форма диспетчера приложений).

Подробнее здесь: https://stackoverflow.com/questions/108 ... layed-call
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»