3

私のアプリには、BlackBerry Stopwatchアプリケーションのような機能があります
。100ミリ秒ごとに更新される、時刻を表示するラベルです。

ラベルを更新するためにTimerTaskをスケジュールするタイマー用に別のスレッドを使用しました。

すべて正常に動作しますが、アプリのストップウォッチの実行速度が組み込みのBlackBerryストップウォッチよりも少し遅いことに気付きました。1分あたり1秒の損失があります。
不明な理由で、アプリのタイマーがしばらくの間、約300〜500ミリ秒停止することがあります。

アプリのタイマーがBlackBerryストップウォッチより遅くなる原因は何ですか?
BlackBerryストップウォッチと同じくらいスムーズに動作するストップウォッチを作成するための提案はありますか?

4

2 に答える 2

3

System.currentTimeMillis()を使用して時間を計算する必要があります。タイマーは、いつ実行されるかを保証しません。指定された時間が実行開始までの最小遅延であることが保証されますが、お気づきのとおり、最大時間はありません。したがって、タイマーを使用してUIの更新をスケジュールしますが、System.currentTimeMillis()を使用して経過時間を計算します。

于 2010-10-30T16:48:33.787 に答える
2

期間の追加に頼るべきではないと思います。したがって、1秒間の60回の睡眠は、分として扱われるべきではありません。

代わりに、1秒間スリープし、目覚めた後、システム時刻を確認してください。

于 2010-10-30T16:48:17.653 に答える