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

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