Führe jede zweite Java-Schleife aus

7
%Vor%

Und andere:

%Vor%

Beide funktionieren nicht (Anwendung ist zwangsweise geschlossen). Welche anderen Möglichkeiten kann ich ausprobieren?

    
good_evening 27.07.2012, 11:38
quelle

5 Antworten

25

Ihr Code ist fehlgeschlagen, weil Sie im Hintergrundthread schlafen, aber die Anzeigedaten müssen im UI-Thread ausgeführt werden.

Sie müssen displayData von runOnUiThread (Runnable) ausführen oder den Handler definieren und eine Nachricht an ihn senden.

zum Beispiel:

%Vor%     
dilix 27.07.2012, 11:50
quelle
8

Verwende onPostDelayed() von jedem deiner Ansehen oder einen Handler . Sie sparen Speicher, indem Sie kein Timer oder neues Thread erstellen.

%Vor%     
biegleux 27.07.2012 12:01
quelle
0

Versuchen Sie Folgendes:

%Vor%

U kann das auch versuchen

Es gibt auch eine andere Möglichkeit, mit der Sie die Benutzeroberfläche in einem bestimmten Zeitintervall aktualisieren können. Oben sind zwei Optionen richtig, aber abhängig von der Situation können Sie die Benutzeroberfläche in einem bestimmten Zeitintervall auf verschiedene Arten aktualisieren.

Deklarieren Sie zuerst eine globale Variable für Handler, um die UI-Steuerung von Thread aus zu aktualisieren, wie unten

Handler mHandler = neuer Handler (); Erstellen Sie nun einen Thread und verwenden Sie die while-Schleife, um die Aufgabe regelmäßig mit der Schlafmethode des Threads auszuführen.

%Vor%     
Goofy 27.07.2012 11:47
quelle
0

Dort haben Sie mehrere Fehler gemacht:

  1. Sie sollten niemals Thread.sleep () im Hauptthread aufrufen (und Sie sollten es auch niemals lange blockieren). Sobald der Hauptthread mehr als 5 Sekunden lang blockiert ist, wird ein ANR (Anwendung antwortet nicht) ausgeführt und die Kraft wird geschlossen.

  2. Sie sollten vermeiden, Timer in Android zu verwenden. Versuchen Sie Handler stattdessen. Eine gute Sache über den Handler ist, dass er im Hauptthread erstellt wird - & gt; kann auf Ansichten zugreifen (im Gegensatz zu Timer, der auf einem eigenen Thread ausgeführt wird, der nicht auf Ansichten zugreifen kann).

    %Vor%
Yuriy Kulikov 27.07.2012 12:15
quelle
0

Ich stieß auf diesen Thread, als ich versuchte, das Problem zu umgehen, dass Sie nicht Sekunden im DigitalClock Widget für Android verstecken können. DigitalClock ist jetzt veraltet und das empfohlene Widget, das jetzt verwendet wird, ist TextClock. Das funktioniert nicht auf alten APIs tho ... Deshalb musste ich meine eigene 24-Stunden-Uhr schreiben. Ich weiß nicht, ob das eine gute Implementierung ist, aber es scheint zu funktionieren (und es wird jede Sekunde aktualisiert):

%Vor%

Thankyou biegleux, um mich in der richtigen Richtung zu zeigen!

    
TiredDude 13.12.2013 19:43
quelle

Tags und Links