2015-02-05 19 views
0

我使用ToastCountdown Timer顯示超時秒,但我覺得Toast顯示實際上是滯後,則實時秒,有沒有更好的方式來顯示信息妥善?「定時器吐司」顯示滯後那麼實際的「倒計時」

CountDownTimer timer = new CountDownTimer(20000, 1000) { 

    @Override 
    public void onTick(long millisUntilFinished) { 

     Toast.makeText(getApplicationContext(), "Disabling Task, Please wait : " + millisUntilFinished/1000, Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onFinish() { 
     Toast.makeText(getApplicationContext(), "Congratulations!! Time out", Toast.LENGTH_SHORT).show(); 
    } 
}.start(); 

回答

1

問題是吐司被添加到一個隊列中,並一個接一個地執行。您的剔號比Toast.LENGTH_SHORT更快,這會導致延遲。您希望持續參考先前的烤麪包,並在顯示新烤麪包之前將其取消。

Toast mToast = null; 

CountDownTimer timer = new CountDownTimer(20000, 1000) { 

    @Override 
    public void onTick(long millisUntilFinished) { 
     if (mToast != null) mToast.cancel(); 
     mToast = Toast.makeText(getApplicationContext(), "Disabling Task, Please wait : " + millisUntilFinished/1000, Toast.LENGTH_SHORT); 
     mToast.show(); 
    } 

    @Override 
    public void onFinish() { 
     if (mToast != null) mToast.cancel(); 
     mToast = Toast.makeText(getApplicationContext(), "Congratulations!! Time out", Toast.LENGTH_SHORT); 
     mToast.show(); 
    } 
}.start(); 

警告!這不適用於Android 2.3。

+0

謝謝尤金,這會解決延遲問題嗎?它能夠與實際時間秒同步嗎? – user45678

+0

沒有同步。吐司只會顯示你告訴它顯示的內容。如果我理解正確,每一秒都會彈出一個新的敬酒。它將按照您的預期工作。有時它可能會跳過一秒鐘(只顯示,執行仍然可以),所以你應該對'millisUntilFinished/1000'做一些舍入。 –

+0

好,非常感謝。讓我試試 – user45678