2012-12-05 78 views
8

我有這樣的下面的代碼:如何確定定時任務是否已經完成

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 

我們可以判斷該任務是由定時器已經執行或仍因?

回答

5

添加一個簡單的變量如..

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

這是一個好主意!但是當我多次調用同一個任務時,出於多種目的。但是,我有不同的計時器變量來取消不同的任務。我怎樣才能發現與該特定計時器相對應的任務正在運行或沒有運行。 – Anand

3

當然,

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; 
    } 
}; 

編輯: 如果你不快樂與擴展類,你可以使用的方法scheduledExecutionTime(),這如果任務尚未運行,則返回0。

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

+0

我知道這個解決方法..但問題是isDone()不能顯式調用,除非你擴展TimerTask。但我想知道是否有任何從TimerTask api這.. – Pavan

+0

好吧,有你,我已經修改了我的答案:) – JustDanyul

+0

謝謝..但android文檔for scheduledExecutionTime()說:這些任務尚未運行返回一個未定義的值。 http://developer.android.com/reference/java/util/TimerTask.html#scheduledExecutionTime() – Pavan

相關問題