基本的にストップウォッチであり、ラップタイムを表示するブラックベリー アプリを作成しようとしています。まず、ストップウォッチ機能を最適な方法で実装しているかどうかわかりません。00:00 から始まる「時計」を表示する LabelField (_myLabel) があります。次に、開始ボタンを押すと、毎秒 _myLabel フィールドが最後の更新から経過した秒数で更新されます (1 だけ増加する必要がありますが、遅延が発生し、数値がスキップされる場合があります)。私はそれを行う別の方法を考えることはできません-そして、私はGUI開発とスレッドに慣れていないので、それが理由だと思います.
編集:ストップウォッチと呼ばれるものは次のとおりです。
_timer = new Timer();
_timer.schedule(new MyTimerTask(), 250, 250);
TimerTask は次のとおりです。
class MyTimerTask extends TimerTask {
long currentTime;
long startTime = System.currentTimeMillis();
public void run() {
synchronized (Application.getEventLock()) {
currentTime = System.currentTimeMillis();
long diff = currentTime - startTime;
long min = diff / 60000;
long sec = (diff % 60000) / 1000;
String minStr = new Long(min).toString();
String secStr = new Long(sec).toString();
if (min < 10)
minStr = "0" + minStr;
if (sec < 10)
secStr = "0" + secStr;
_myLabel.setText(minStr + ":" + secStr);
timerDisplay.deleteAll();
timerDisplay.add(_timerLabel);
}
}
}
とにかく、ストップウォッチを停止すると、ラップタイム データの履歴テーブルが更新されます。このリストが長くなると、タイマーが低下し始めます。スクロールしようとすると、非常に悪くなります。
ストップウォッチを実装するより良い方法はありますか?