2010-12-01 90 views
0

如何使用Android的CountDownTimer?如何使用Android的CountDownTimer?

我基本上是想有以下情形:

boolean 3_s_passed = false; 
// setup counter to change 3_s_passed=true when it finishes 
counter.start(); 
while(true){ 

if(3_s_passed || user_is_Done) break; 
// do some stuff which may set user_is_Done to true 

} 

所以在3秒過去,或者用戶完成,我圈外。 在計數器結束之前,while循環代碼是否會運行?我對CountDownTimer的理解是否正確?

感謝您的幫助

回答

0

您可以爲此使用處理程序。使用Runnable,任務在3秒後或用戶完成任務時完成。發佈它3秒鐘,並刪除回調,如果用戶做任何事情。同下面的代碼演示如何正確使用Handler但不循環,從而允許用戶進行的操作,你必須明白這一點你自己:)

Runnable action = new Runnable(){ 

    public void run(){ 
     //... 
    } 
}; 

mHandler.postDelayed(action, 3000); 
if(userDone){ 
    mHandler.removeCallbacks(action); 
    mHandler.post(action); 
} 
+0

嗯。如果我理解正確,mHandler會在3秒內將消息添加到消息隊列中。但是,如果userDone,mHandler取消該操作請求,並且告訴Android現在將操作添加到消息隊列中。那是對的嗎?也想知道如果userDone = true,是否會保證在if語句之後的代碼之前運行該操作?排隊的想法總是讓我擔心時間錯誤和競賽狀況。 – f20k 2010-12-01 22:01:16

0

不要使用這個類它包含一個取消方法的比賽。 https://code.google.com/p/android/issues/detail?id=58668

取消在onTick和取消之間的比賽情況下不起作用。

最好從頭開始實施它,沒有比賽。 在其他情況下,您將遇到問題,直到正式解決。