Ich habe einen Timer in meiner Anwendung, die alle 15 Sekunden eine AsyncTask startet. DieseAndroid-Relaunch-Timer nach dem Abbrechen
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
}
gestartet von der onCreate()
Methode.
Wenn ich eine andere Aktivität anrufe, muss ich diesen Timer abbrechen, was ich mit timer.cancel()
auf meiner onPause()
Methode in meiner Hauptaktivität gemacht habe.
Jetzt, wenn ich zur Hauptaktivität zurückkehre, muss ich den Timer neu starten. Ich habe versucht, die AsynchTaskTimer()
in der onRestart()
Methode neu zu starten, aber ich bekomme eine java.lang.IllegalStateException: Timer was canceled
.
Wie starte ich meinen Timer neu?
Setzen Sie den Timer in onpause auf null und wiederholen Sie ihn wie timer = new Timer(); und starten Sie es, wenn das alte Hash-Objekt abgebrochen wurde. Es kann nicht neu gestartet werden, es sei denn, es wurde erneut initialisiert. –
Warum verwenden Sie Handler und Timer zusammen? – tony9099