J'essaie d'obtenir mon compte à rebours pour effectuer sa fonction de mise à jour de mon heure et de la date de la TextView et de tirer sur STYONITEMSELISElistener tous les secondes afin que l'application compte dynamiquement au lieu de l'initiative de dynamique. S'il y a une méthode plus efficace, alors tirez rapidement Myonitemselectedlistener, j'apprécierais la critique. } p> @Nlle: Cela bloque l'application et apporte-le dans le logcat lorsque Oncreate () est appelé. P> 02-23 13: 19: 43.540: I / System.out (11667): Sun Jun 24 00:00:00 MDT 2012
02-23 13: 19: 44.500: W / DALVIKVM (11667): Threadid = 11: Fil sortie avec une exception non capturée (Groupe = 0x40A351F8)
02-23 13: 19: 44.510: E / AndroidRuntime (11667): Exception fatale: Timer-0
02-23 13: 19: 44.510: E / Androidruntime (11667): Android.View.ViewrooTIMPL $ appeléfromwrongthreadException: Seul le fil d'origine créé une hiérarchie de vue peut toucher ses vues.
02-23 13: 19: 44.510: E / AndroiDruntime (11667): à Android.View.ViewRootimpl.Checkthread (Viewrootimpl.java:4039)
02-23 13: 19: 44.510: E / AndroiDruntime (11667): à Android.View.ViewRootimpl.requestlayout (Viewrootimpl.java:709)
02-23 13: 19: 44.510: E / Androidruntime (11667): à Android.View.View.RequestLayout (View.java:12675)
02-23 13: 19: 44.510: E / Androidruntime (11667): à Android.View.View.RequestLayout (View.java:12675)
02-23 13: 19: 44.510: E / Androidruntime (11667): à Android.View.View.RequestLayout (View.java:12675)
02-23 13: 19: 44.510: E / Androidruntime (11667): à Android.View.View.RequestLayout (View.java:12675)
02-23 13: 19: 44.510: E / Androidruntime (11667): à Android.View.View.RequestLayout (View.java:12675)
02-23 13: 19: 44.510: E / Androidruntime (11667): à android.widget.textview.checkforrelayout (textview.java:6773)
02-23 13: 19: 44.510: E / AndroiDruntime (11667): à android.widget.textview.setText (textview.java:3306)
02-23 13: 19: 44.510: E / Androidruntime (11667): à android.widget.textview.settext (textview.java:3162)
02-23 13: 19: 44.510: E / Androidruntime (11667): à android.widget.textview.settext (textview.java:3137)
02-23 13: 19: 44.510: E / Androidruntime (11667): à com.pixelcrunch.cunchtime.Checount $ 1.Run (theCount.java:87)
02-23 13: 19: 44.510: E / Androidruntime (11667): À Java.Util.Timer $ TimerIMPL.RUN (Timer.JAVA:284) CODE> P> P>
4 Réponses :
Vous pouvez soit utiliser sendMessageTime () code> ou
posttame () code> Pour vous envoyer un message un second à l'avenir, et le gérer alors. P>
Peut-être que vous pouvez également utiliser minuterie / timerask pour déclencher une opération à plusieurs reprises: HTTPS : //developer.android.com/reference/java/util/timer.html P>
Essayez d'utiliser Enfin, vous devez appeler UpdateDisplay CODE> Fonction comme ci-dessous:
updatedisplay () code> dans
Oncreate () code> fonction. de
J'espère que ce code vous aiderait à terminer ce que vous voulez! P> p>
Merci! J'ai ajouté le code runonuthread () et j'ai eu pour travailler. Je ne sais pas à quel point cette petite tâche sera intensive et s'il s'agit d'un codage mauvais, mais que cela semble fonctionner.
Oh. Vous devez faire attention au fil de fond et à l'interface utilisateur. Dans ce cas, vous avez besoin d'un fil d'interface utilisateur pour le texte de la date de mise à jour. Et l'objet de la minuterie est le meilleur choix. Si vous souhaitez mettre à jour le pourcentage du fil de téléchargement, vous devez utiliser un objet de gestionnaire. Google a beaucoup d'exemple: D
Pour l'exécuter sur le thread principal:
new Timer().schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { yourMethodOnTheMainThread(); } }); } },0,10000);