我在我的Android應用程序中使用可運行程序來更新倒數計時器,如下面的代碼所示。它似乎工作,但我注意到我的計時器比預期的要花幾秒鐘。例如,如果它應該倒數3分鐘,則需要3分5秒。我嘗試在服務中使用計時器來管理主要活動中的倒計時顯示。計時器/服務按預期工作。Runnable執行速度比預期慢
爲什麼不運行runnable
/postDelayed()
正確的時間?是postDelayed()
時間可靠嗎? runnable
遞減一個變量,然後使用它來更新EditText
與setText()
。 setText()
花費的時間太長(一秒鐘的一小部分),所以runnable
確實每隔1.x秒運行一次?
Handler handler = new Handler();
Runnable r = new Runnable() {
public void run() {
// decrement the time remaining and update the display
handler.postDelayed(this, 1000);
}
};
...
// start the runnable
handler.postDelayed(r, 1000);
如果您希望計時器準確無誤,最好從可運行內部發布消息,而不是直接更新UI。當然,理想的情況是,您應該像上面提到的那樣在服務中安裝計時器。 – rajath 2011-03-26 08:17:56
我發現postDelayed發射的時間差異很大。當屏幕*關閉* 2分鐘設置會導致6 - 14分鐘的延遲。 (Android 2.2,HTC Hero) – fadedbee 2012-06-12 13:25:18