Mam timer w mojej aplikacji, która uruchamia AsyncTask co 15 sekund.Ponowne uruchamianie zegarów z systemem Android po ich anulowaniu
Timer timer = new Timer();
public void AsynchTaskTimer() {
final Handler handler = new Handler();
TimerTask timertask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
new updateGPSTask().execute();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(timertask, 0, 15000); // execute in every 15sec
}
Uruchomiono to za pomocą metody onCreate()
.
Kiedy zadzwonię do innej czynności, muszę anulować ten zegar, co zrobiłem przy użyciu metody timer.cancel()
na mojej metodzie onPause()
w mojej głównej aktywności.
Teraz po powrocie do głównej aktywności muszę ponownie uruchomić timer. Próbowałem ponownie uruchomić AsynchTaskTimer()
w metodzie onRestart()
, ale otrzymałem java.lang.IllegalStateException: Timer was canceled
.
Jak uruchomić ponownie zegar?
ustaw timer jako wartość null w trybie onpause i powtórz to tak, jak timer = new Timer(); i uruchomić go, ponieważ stary zakodowany obiekt został anulowany, nie można go ponownie uruchomić, chyba że zostanie ponownie zainicjowany na nowy –
, dlaczego używasz programu obsługi i timer razem? – tony9099