2016-08-08 39 views
0

Ich habe das folgende Problem. Alle 2 Sekunden geht das Programm in eine if-Anweisung. In dieser if-Anweisung möchte ich einen Timer haben, der mir nach 15 Sekunden eine Nachricht gibt. Der Timer sollte mit einer Verzögerung von 1 Sekunde ausgeführt werden. Aber während ich mit dem Timer "warte", wird die if-Anweisung noch 7 Mal ausgeführt. Mein Problem ist, ich habe immer 7 gleiche TimerTask gleichzeitig ausgeführt. Wie kann ich dieses Problem lösen?Java TimerTask Abbrechen

if (response == true) { 
    final Timer timer = new Timer(); 
    final int keepAliveTimeout = 15000; //15 seconds 
    timer.schedule(new TimerTask() { 
    @Override 
    public void run() { 
     if (response) { 
     response = false; 
     Log.i(TAG, "********Response******"); 
     timeoutCounter = 0; 
     } else if (timeoutCounter > keepAliveTimeout) { 
     Log.i(TAG, "********Timer Timeout******"); 
     } 

     Log.i(TAG, "********Timer******"); 
     timeoutCounter = timeoutCounter + 1000; 
    } 
    }, 0, 1000); 
} 

Antwort

2

Von Java API:

public void Zeitplan (Timertask Aufgabe, lange Verzögerung, lange Zeit)

Termine der angegebene Aufgabe für die wiederholte Fest Verzögerung Ausführung, beginnend nach die angegebene Verzögerung. Spätere Ausführungen finden in ungefähr regelmäßigen Abständen statt, getrennt durch den angegebenen Zeitraum.

, das bedeutet, dass Sie Ihre Aufgabe ohne Verzögerung ausgeführt werden, um jede Sekunde

ausgeführt werden