2017-09-11 3 views
0

Ich muss den aktuellen laufenden Timer Task stoppen und es mit einer anderen Verzögerung neu starten. Ich habe mehrere Möglichkeiten ausprobiert, aber nichts funktioniert einwandfrei. Wenn ich den folgenden Code verwende, wird TimerTask in beiden Verzögerungen ausgeführt.Stoppt und startet den Timer-Task in Android

public void restUploadInterval(long newDelay) { 
     timerRealData.cancel(); 
     timerRealData.purge(); 
     mMqttSupporter = MqttSupporter.getInstance(); 
     Timer timerRealData = new Timer(); 
     delay = newDelay; 
     UploadingTask uploadingTask = new UploadingTask(); 
     timerRealData.scheduleAtFixedRate(uploadingTask, delay, delay); 
    } 

Bitte lassen Sie mich wissen, wie kann ich aktuelle Timer-Task stoppen und es erneut mit einer anderen Verzögerung ausführen.

+0

Wenn Sie eine neue Instanz der Timer-Task-Klasse erstellen, werden mehrere Instanzen der Timer-Task im Hintergrund ausgeführt. Anstatt also ein neues Objekt zu erstellen, verwenden Sie dasselbe Objekt für die neue Timer-Aufgabe. –

Antwort

0

Genau wie Sie getan haben.

Um einen Timer mit einem anderen Timing neu zu starten, müssen Sie() den alten Timer abbrechen und einen neuen erstellen.

Ihr Code funktioniert wahrscheinlich nicht, nur weil Sie die Elementvariable timerRealData mit einer lokalen Variablen mit demselben Namen ausblenden.

Versuchen zu ändern:

Timer timerRealData = new Timer();

mit

timerRealData = new Timer();

und es sollte funktionieren.

Verwandte Themen