2012-12-05 11 views
8

Ich habe diesen folgenden Code abgeschlossen hat:Wie Sie feststellen, ob die Timer-Task

Timer timer = new Timer();  
TimerTask task = new TimerTask() { 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
    } 
}; 

timer.schedule(task, 10000);//execute after 10 seconds 

Können wir, ob die Aufgabe durch den Zeitgeber ausgeführt wird bereits bestimmen oder noch fällig?

Antwort

5

hinzufügen einfache Variable wie ..

boolean isTaskCompleted = false; 
    Timer timer = new Timer();  
    TimerTask task = new TimerTask() { 

    @Override 
    public void run() { 
     // do stuff 
     isTaskCompleted = true; 
    } 
    }; 

    timer.schedule(task, 10000);//execute after 10 seconds 
+0

Das ist eine gute Idee! Aber wenn ich dieselbe Aufgabe mehrmals für mehrere Zwecke anrufe. Ich habe jedoch verschiedene Timer-Variablen, um verschiedene Aufgaben abzubrechen. Wie kann ich feststellen, dass die Aufgabe, die dem entsprechenden Timer entspricht, ausgeführt wird oder nicht? – Anand

3

Sicher,

class CustomTask extends TimerTask { 
    protected boolean isDone = false; 
    public boolean isDone() {return isDone; } 

    @Override 
     public void run() {} 
} 

CustomTask task = new CustomTask() { 
    @Override 
    public void run() { 
     isDone=true; 
    } 
}; 

EDIT: Wenn Sie mit Verlängerung der Klasse nicht zufrieden sind, können Sie die Methode scheduledExecutionTime() verwenden, könnte dies gibt 0 zurück, wenn die Aufgabe nicht ausgeführt wurde.

http://docs.oracle.com/javase/6/docs/api/java/util/TimerTask.html

+0

Ich kenne diese Problemumgehung .. Aber Problem hier ist, dass IsDone() nicht explizit aufgerufen werden kann, wenn Sie TimerTask erweitern. Aber ich wollte wissen, ob es eine API von TimerTask für diese .. – Pavan

+0

ok, hab ich, habe meine Antwort geändert :) – JustDanyul

+0

danke .. aber Android Doc für geplanteExecutionTime() sagt dies: Tasks, die noch nicht ausgeführt haben gib einen undefinierten Wert zurück. http://developer.android.com/reference/java/util/TimerTask.html#scheduledExecutionTime() – Pavan

Verwandte Themen