4

専門のアウトドア スポーツ用の簡単な計時アプリを作成しています。アプリは一連の計算を毎秒実行し、ユーザーが関心を持つ情報を表示します。経過時間は、計算結果の精度にとって重要です。計算と結果が正確に毎秒更新されるのが理想的です。更新間隔を制御するために、タイマーまたはクロノメーター ウィジェットを使用してみました。

間隔を確立するためのより正確な方法はありますか? ほぼ正確な 1 秒間隔を与えるテクニックはありますか?

以下のコードは完全ではありません - 私が使用している時間とクロノメーターのタイプを示すための努力です - それらは正常に動作しますが、正確ではありません.

import java.util.Timer ;
import java.util.TimerTask;
...
myTimer = new Timer();
myTimer.schedule(new TimerTask() {
public void run() {
...
TimerMethod();
}
}, 0, 1000);
... 
private void TimerMethod()
{
this.runOnUiThread(Timer_Tick);
}
...
private Runnable Timer_Tick = new Runnable() {
public void run() {
blah blah
}

//////////////////////////////

import android.widget.Chronometer;
...
final Chronometer myChronometer = (Chronometer)findViewById(R.id.chronometer);
final TextView keyBox = (TextView)findViewById(R.id.keyBox);
...      
myChronometer.start();
...   
myChronometer.setOnChronometerTickListener(
new Chronometer.OnChronometerTickListener(){
...
public void onChronometerTick(Chronometer myChronometer) {
blah blah             
}
4

1 に答える 1

7

java.util.Timer クラスのscheduleAtFixedRateメソッドを見ましたか?

javadoc によると、「固定レートの実行では、各実行は、最初の実行のスケジュールされた実行時間に対して相対的にスケジュールされます。実行が何らかの理由 (ガベージ コレクションやその他のバックグラウンド アクティビティなど) で遅延した場合、2 つ以上の実行が行われます。長い目で見れば、実行頻度は指定された期間の逆数になります (Object.wait(long) の基礎となるシステム クロックが正確であると仮定します)。

于 2011-10-01T23:34:19.040 に答える