У меня есть ситуация в приложении для 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() в секунду.
Что я делаю неправильно? Это моя проблема с new Handler()? Каков наилучший способ справиться с этим? Я хочу один вызов sendData() в секунду, пока пользователь не покинет приложение (менеджер приложений формы).