Ho un timer nella mia applicazione che lancia AsyncTask ogni 15 secondi.Rilanciare Android Timer dopo che sono stati cancellati
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
}
Questo è lanciato dal metodo onCreate()
.
Quando chiamo un'altra attività, è necessario annullare questo timer, che ho utilizzato utilizzando il metodo timer.cancel()
nel mio metodo onPause()
nella mia attività principale.
Ora, quando torno all'attività principale, devo riavviare il timer. Ho provato a riavviare lo AsynchTaskTimer()
nel metodo onRestart()
, ma ottengo uno java.lang.IllegalStateException: Timer was canceled
.
Come riavviare il timer?
imposta il timer come nullo in onpause e lo reiscrive come timer = new Timer(); e lanciarlo mentre il vecchio oggetto hash è stato cancellato non può essere riavviato se non viene reiniziato a uno nuovo –
perché stai usando gestore e timer insieme? – tony9099