Il y a déjà un Chronomètre de classe pour android et pourquoi ne pas mon travail de mise en œuvre?
Dernièrement, j'ai vu http://developer.android.com/reference/android/os/CountDownTimer.html et je me demandais si il y a une classe pour arrêter de montres depuis je veux dire à l'utilisateur de mon Application depuis combien de temps il déjà essayer de résoudre le puzzle. Je veux dire qu'il n'est pas compliquée à programmer un tel arrêter de les regarder sur votre propre. J'ai essayé quelque chose comme
Runnable runnable = new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
long seconds = (System.currentTimeMillis() - t) / 1000;
statusBar.setText(String.format("%02d:%02d", seconds / 60, seconds % 60));
}
}
};
statusBar.post(runnable);
Mais bizarrement, la mise en page de mon activité n'est pas gonflé plus depuis que j'ai cette statusBar.post(runnable);
à la fin de l'acitivité du onCreate
méthode de sens qu'après le démarrage de l'application, je ne vois qu'un écran blanc au lieu de l'interface normale.
- La bonne chose à faire est d'utiliser une Minuterie.
- Vous ne pouvez pas dormir le thread principal. Et si vous exécutez ce code dans d'autres thread, vous allez avoir besoin d'un gestionnaire pour écrire sur l'INTERFACE utilisateur (seul le thread principal peut modifier l'INTERFACE utilisateur).
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser un Chronomètre.
Mais de toute façon, votre code peut fonctionner que si vous retirez le sommeil à partir de l'UI thread.
Ont un look à la Chronomètre classe.
Exemple de code à partir APIDemo:
R. layout.chronomètre:
Ajouter à Strings.xml
Vous devez utiliser un Chronomètre.
quand on arrête le chronomètre
le chronomètre avant de commencer il
la réinitialisation du chronomètre
Pourquoi ton code ne fonctionne pas c'est parce que vous postez un
Runnable
pour le thread d'INTERFACE utilisateur file d'attente de messages. L'exécutable s'exécute toujours dans lewhile
boucle, la prévention de la thread de l'INTERFACE utilisateur, de faire d'autres affaires, comme le dessin de votre mise en page et de répondre aux intrants.À l'aide de
Thread.sleep()
dans un thread d'INTERFACE utilisateur est presque toujours tort. Envisagez d'utiliser unTimer
à la place.