以下のコードに示すように、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);