У меня есть ситуация в приложении для 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()
в секунду, пока пользователь не покинет приложение (менеджер приложений формы).