Android Relaunch Timer nach dem Abbrechen

8

Ich habe einen Timer in meiner Anwendung, der alle 15 Sekunden eine AsyncTask startet.

%Vor%

Dies wird von der Methode onCreate() gestartet.

Wenn ich eine andere Aktivität anrufe, muss ich diesen Timer abbrechen, was ich mit timer.cancel() auf meiner Methode onPause() in meiner Hauptaktivität getan habe.

Wenn ich jetzt zur Hauptaktivität zurückkehre, muss ich den Timer neu starten. Ich habe versucht, das AsynchTaskTimer() in der Methode onRestart() neu zu starten, aber ich bekomme java.lang.IllegalStateException: Timer was canceled .

Wie starte ich meinen Timer neu?

    
pteixeira 28.03.2013, 11:30
quelle

3 Antworten

14

Versuchen Sie es mit:

%Vor%

Damit können Sie den Speicher erneut dem Timer zuweisen und ihn mit AFAIK starten.

    
Sanober Malik 28.03.2013, 11:34
quelle
12

Also, was sagt Docs über cancel () Methode:

  

Beachten Sie, dass diese Methode innerhalb der run-Methode von a aufgerufen wird   Die Wiederholung der Timer-Aufgabe garantiert absolut, dass die Timer-Aufgabe ausgeführt wird   nicht mehr laufen.

Das bedeutet, wenn Sie den Timer einmal abbrechen (), können Sie ihn nicht mehr ausführen. Sie müssen eine neue Instanz von Timer erstellen, beispielsweise in der Methode onResume() wenn Sie es erneut ausführen möchten.

%Vor%     
Sajmon 28.03.2013 11:34
quelle
1

Anstatt TimerTask zu verwenden, können Sie Ihren Code (der zum Aktualisieren von GPS verwendet wird) in einen Dienst verschieben . Ich denke es ist besser. Sie können startService() in onCreate() aufrufen. und stopService() in onDestroy() . Beachten Sie, dass Dienste auf dem Hauptthread der Benutzeroberfläche ausgeführt werden. Vermeiden Sie daher NetworkOnMainThreadException in Ihrem Konto GPS-Updater-Aufgabe.

    
user1521536 28.03.2013 11:43
quelle