2017-10-14 1 views
0

Es ist ein ärgerliches Problem Jungs, an diesem Code einen Blick:System-Delay-Effekte auf alle Befehle

textView.setText("hi"); 
    SystemClock.sleep(5000); 
    textView2.setText("hi"); 

Wenn Sie diesen Code logisch Textansicht ausgeführt werden muss „hallo“ und 5 Sekunden später Textansicht 2 zeigen zeige "Hallo". Aber das passiert nicht und nach 5 Sekunden zeigen beide zusammen dieses Wort!

+4

Mögliche Duplikat [Wie ein Verfahren nach einer Verzögerung in Android nennen] (https://stackoverflow.com/questions/3072173/how-to-call- a-method-after-a-delay-in-android) – KeLiuyue

Antwort

0

Sie blockieren den Hauptanwendungs-Thread und verhindern, dass die Benutzeroberfläche aktualisiert wird. Dies wird in jedem anständigen Buch zur Entwicklung von Android-Apps behandelt.

Ersetzen Sie den Code mit diesem:

textView.setText("hi"); 
textView2.postDelayed(new Runnable() { 
    public void run() { 
    textView2.setText("hi"); 
    } 
}, 5000); 
+0

Dies kann mein Problem beheben, aber ich möchte Verzögerung in for-Schleife verwenden und diese Art von Verzögerung kann nicht voll genutzt werden. – Mehrdad

+0

@Mehrdad: Es gibt nichts über 'postDelayed()', das verhindert, dass es für regelmäßige UI-Aktualisierungen innerhalb einer Aktivität oder eines Fragments verwendet wird. [Diese Beispiel-App] (https://github.com/commonsguy/cw-omnibus/tree/v8.7/Threads/PostDelayed) zeigt alle fünf Sekunden einen 'Toast' an, der' postDelayed() 'verwendet. – CommonsWare

+0

ja, es für Toast verwenden, aber wenn Sie ein Beispiel mit for-Schleife zeigen können :) – Mehrdad

Verwandte Themen