以下のコードに示すように、Android アプリでランナブルを使用してカウントダウン タイマーを更新しています。動作しているように見えますが、タイマーが予想より数秒長くかかることに気付きました。たとえば、3 分間カウントダウンすることになっている場合、3 分 5 秒かかります。メインアクティビティのカウントダウン表示を管理するサービスでタイマーを使ってみました。タイマー/サービスは期待どおりに機能しました。
runnable
/postDelayed()
が正しい時間実行されないのはなぜですか? postDelayed()
タイミングは信頼できますか?はrunnable
変数をデクリメントし、それを使用して with を更新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);