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(); }
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!