Heim > Java > javaLernprogramm > Warum führt die falsche Verwendung von „runOnUiThread' von Android dazu, dass die Benutzeroberfläche nicht reagiert?

Warum führt die falsche Verwendung von „runOnUiThread' von Android dazu, dass die Benutzeroberfläche nicht reagiert?

Barbara Streisand
Freigeben: 2024-12-23 20:54:11
Original
798 Leute haben es durchsucht

Why Does Incorrect Use of Android's `runOnUiThread` Lead to Unresponsive UI?

runOnUiThread in Android verstehen

In der Android-Entwicklung ist der UI-Thread für die Handhabung von Benutzerinteraktionen und die Aktualisierung der Benutzeroberfläche verantwortlich. Um sicherzustellen, dass alle UI-Vorgänge im UI-Thread ausgeführt werden, wird üblicherweise die Methode runOnUiThread verwendet.

In Ihrem bereitgestellten Codeausschnitt wird versucht, die UI innerhalb eines separaten Threads zu aktualisieren mit runOnUiThread. Allerdings ist die aktuelle Implementierung falsch, was zu einem nicht reagierenden Verhalten beim Klicken auf die Schaltfläche führt. Hier ist der Grund:

Falsche Verwendung von runOnUiThread

Die runOnUiThread-Methode akzeptiert eine Runnable-Instanz als Argument. In Ihrem Code erstellen Sie fälschlicherweise einen neuen Thread über Thread(Runnable), anstatt das Runnable in der aktuellen Aktivität zu implementieren. Dadurch wird ein separater Thread ohne Looper erstellt, der für die Verarbeitung von UI-Ereignissen unerlässlich ist.

Korrigierter Code

Die korrigierte Version des runThread Methode ist wie folgt:

private void runThread() {

    new Thread() {
        public void run() {
            while (i++ < 1000) {
                try {
                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            btn.setText("#" + i);
                        }
                    });
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }.start();
}
Nach dem Login kopieren

In diesem korrigierten Code wird ein neuer Thread erstellt, aber innerhalb dieses Threads runOnUiThread wird aufgerufen, um die UI-Elemente im UI-Thread zu aktualisieren. Die an runOnUiThread übergebene Runnable-Instanz enthält den Code, der den Text der Schaltfläche aktualisiert.

Durch die korrekte Verwendung von runOnUiThread stellen Sie sicher, dass alle UI- Zugehörige Vorgänge werden im Haupt-UI-Thread ausgeführt, wodurch ein Einfrieren der Benutzeroberfläche verhindert und sichergestellt wird Reaktionsfähigkeit.

Das obige ist der detaillierte Inhalt vonWarum führt die falsche Verwendung von „runOnUiThread' von Android dazu, dass die Benutzeroberfläche nicht reagiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage