Übergabe der Ausführung an den Hauptthread in Multithreading-Umgebungen
Bei der Multithread-Programmierung, insbesondere innerhalb von Android-Diensten, können Situationen auftreten, in denen Hintergrundthreads dies benötigen mit dem Hauptthread interagieren. Eine häufige Anforderung besteht darin, Aufgaben wie Runnables in der Nachrichtenwarteschlange des Hauptthreads zu veröffentlichen.
Lösung mit Kontextreferenz
Wenn der Hintergrundthread Zugriff auf einen Kontext hat Objekt kann entweder der Anwendungs- oder der Dienstkontext verwendet werden, um einen Handler für den Hauptthread zu erhalten:
Handler mainHandler = new Handler(context.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() { // Code to execute on the main thread } }; mainHandler.post(myRunnable);
Lösung ohne Kontext Referenz
In Fällen, in denen der Hintergrundthread keine Kontextreferenz hat, kann ein von @dzeikei vorgeschlagener alternativer Ansatz verwendet werden:
Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() { // Code to execute on the main thread } }; mainHandler.post(myRunnable);
Das obige ist der detaillierte Inhalt vonWie übergebe ich die Ausführung an den Hauptthread in Android: mit und ohne Kontext?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!