2011-09-21 40 views
0

我正在開發一個應用程序,我展示了倒計時。爲了倒計時,我使用Handler類。一旦倒數計時器達到一定時間,鬧鐘就會關閉。我的問題是下面, 起初我顯示計時器時間04:00:00。一旦到達00:00:00,警報就會熄滅。警報代碼工作正常。但定時器顯示不可靠。它工作正常,直到我保持應用程序打開。如果我關閉應用程序(使用家庭或後退)或再次鎖定該設備並打開應用程序,然後顯示的計時器不正確的(延遲了很多,但還是報警適用於時間)。 (但在相同的情況下它有時非常好)。但每當我平設備到系統到時候一切工作正常檢查登錄日食!!!!!!!處理程序,以顯示倒數計時器是不可靠的

1. I want to know whether I am using the Handler properly or not 
2. (or) Is going out of the App or locking the device causing the problem 

下面是我的處理程序代碼,

處理器digiHandler;

//方法來初始化時間,並定義處理器

public void initialize(int hourstime,int mintime,int sectime){ 
    hour = hourstime; 
    min = mintime; 
    sec = sectime; 
    digiHandler = new Handler(); 
    handleRunnable = new Runnable(){ 
     public void run(){ 
      updateTimes(); 
     } 
    }; 
} 


public void startUpdateTheread(){ 
    digiHandler.postDelayed(handleRunnable, UPDATEDELAY); 
}  

// Method to update the timer times 

private void updateTimes(){ 

    timerText = String.format(timerFormat,hour,min,sec); 
    ------------------------- 
    ------------------------- 
    -- code for incrementing the time --- 
    -------------------------- 
    -------------------------- 
    -------------------------- 

     startUpdateTheread();   
} 

請給建議

感謝

編輯: 當我觀察記錄它表明,要倒計時1秒的定時器有時需要1分鐘的時間。日誌是如下,

09-21 21:09:18.965:DEBUG/DigitalTimer(7656):timerText **:4時22分54秒

****long difference here**** 

09-21 21:10:19.308:DEBUG/DigitalTimer(7656):timerText **:4時22分53秒

..................... .................................................. ........... ........................... .................................................. ..... ............................................ ......................................

09-21 21:10: 23.314:DEBUG/DigitalTimer(7656):timerText **:4時22分49秒

**--long difference here ---** 

09-21 21:11:22.604:DEBUG/DigitalTimer(7656):timerText **: 4點22分48秒

它總是在發生。所以我可以排除鎖定/從應用程序出來造成的問題。似乎我需要調整代碼的Handler部分。

+0

爲什麼不使用[CountDownTimer](http://developer.android。com/reference/android/os/CountDownTimer.html) – Zharf

+0

@Zharf - 謝謝你的回答。我會嘗試這個CountDownTimer。請看我的編輯點。 – droidsites

回答

0

問題是,如果活動死亡,那麼它產生的線程也是如此,我建議創建一個服務來處理這個問題,因爲這樣的定時器可以很長時間我想象(超過4分鐘),在那個時候,你需要應用程序不會死亡。 看看http://developer.android.com/reference/android/app/Service.html,讓我知道如果這似乎是一個足夠好的解決方案。