9
votes

Android - Vu application pour effectuer des tâches chaque seconde

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. xxx

}

@Nlle: Cela bloque l'application et apporte-le dans le logcat lorsque Oncreate () est appelé.

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)


0 commentaires

4 Réponses :


0
votes

Vous pouvez soit utiliser sendMessageTime () ou posttame () Pour vous envoyer un message un second à l'avenir, et le gérer alors.

Pour plus d'informations.


0 commentaires

0
votes

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


0 commentaires

27
votes

Essayez d'utiliser UpdateDisplay Fonction comme ci-dessous: xxx

Enfin, vous devez appeler updatedisplay () dans Oncreate () fonction. de
J'espère que ce code vous aiderait à terminer ce que vous voulez!


2 commentaires

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



4
votes

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);


0 commentaires