Android millisecondes
Donc je suis en train d'écrire un chronomètre application qui affiche l'heure en millisecondes, mais pour quelque raison il ne fonctionne pas. Fondamentalement, j'ai juste un contrôle togglebutton qui, après avoir été pressé, démarre l'impression de l'millisecondes à partir de l'heure de début à l'heure actuelle... Dans le simulateur cependant, l'application se bloque. Quel est le problème?
public class testing extends Activity {
/** Called when the activity is first created. */
Button start,stop;
long init,now,time;
TextView display;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
display = (TextView) findViewById(R.id.chronometer1);
final ToggleButton passTog = (ToggleButton) findViewById(R.id.onoff);
passTog.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
init=System.currentTimeMillis();
while(passTog.isChecked())
{
now=System.currentTimeMillis();
time=now-init;
display.setText("t: " + time);
}
}
});
}
}
OriginalL'auteur user1123530 | 2012-01-01
Vous devez vous connecter pour publier un commentaire.
Vous avez certainement ne devez pas exécuter une boucle occupée comme vous le faites à l'intérieur de la OnClickListener. C'est pourquoi l'application se bloque. Vous devez laisser le reste du système a son mot à dire. Aussi, il n'est pas judicieux de mettre à jour l'écran plus d'une fois toutes les 30 millisecondes ou alors, puisque c'est le sujet de la manière la plus rapide que l'œil humain peut suivre. Aussi, vous pouvez suspendre votre minuterie lorsque l'activité est suspendue. Voici une version qui fait tout:
Got maintenant. Mis à jour mon code en conséquence.
y compris bon exemple maintenant, bravo! Mais pourquoi avez-vous initialiser init dans onCreate? Lorsque l'on regarde OP question, je dirais qu'il voulait démarrer le chronomètre sur buttonclick, non pas sur la création d'activités; ou suis-je malentendu quelque chose ici?
Mon code n'est pas initialiser
init
dansonCreate
(plus). Il est défini lors de laonClick
exécute.ah ouais, raté, était toujours là, il y a quelques minutes ;). Excellent travail
OriginalL'auteur Ted Hopp
Vous mettez le
setText()
méthode dans votreonClick()
, si vous cliquez sur le bouton à chaque seconde?Ses pas même un fil!
Essayez le
onTick()
méthode deCountDownTimer
classe à la place.OriginalL'auteur Bharat Ahuja