J'essaie d'écrire une application Blackberry qui est essentiellement un chronomètre, et affiche les temps au tour. Premièrement, je ne suis pas sûr d'implémenter la fonctionnalité chronomètre de la manière la plus optimale. J'ai un LabelField (_myLabel) qui affiche l'horloge - commençant à 00:00. Ensuite, vous appuyez sur le bouton de démarrage et chaque seconde le champ _myLabel est mis à jour avec combien de secondes ont passé depuis la dernière mise à jour (il faut seulement incrémenter de 1, mais il y a parfois un retard et un saut). Je ne peux pas penser à une manière différente de le faire - et je suis nouveau pour le développement de l'interface graphique et les threads, donc je suppose que c'est pourquoi.Mise en œuvre du chronomètre Blackberry
EDIT: Voici ce que appelle le chronomètre:
_timer = new Timer();
_timer.schedule(new MyTimerTask(), 250, 250);
Et voici le 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);
}
}
}
Quoi qu'il en soit lorsque vous arrêtez le chronomètre, il met à jour une table historique des données de temps au tour. Lorsque cette liste devient longue, le minuteur commence à se dégrader. Si vous essayez de faire défiler, cela devient vraiment mauvais.
Y a-t-il une meilleure façon de mettre en œuvre mon chronomètre?
programmez-vous ce TimerTask tous les 1000 msecs? – Jack
Désolé, vous avez oublié d'ajouter cette partie. Je vais mettre à jour avec l'info. – Michaela