Wie zum ausführen von code in Android-UI-thread async?
Ich bin neu in der Android Entwicklung. Ich habe arbeiten von Swing und SWT für mehrere Jahre. Sowohl Swing als auch SWT hat eine stratage das ausführen von code im UI-thread-sync und async. Die typische Nutzung einiges an Zeit verbrauchen, die Mitarbeiter in einem thread zeigt dann das Ergebnis im UI-thread async.
Also meine Frage ist, ist es ähnlich stratage in Android? Hier ist mein code. Parameter runnable ist einige Zeit verbrauchen code. Diese Methode zeigt ein warte-dialog während der Ausführung dann ERWARTEN, dass Sie zu zeigen, ein Toast nach dem es fertig ist. Aber der Toast sein müssen, zeigen im UI-thread. So, wie das zu tun?
public static void showWaitingDialog(final Activity parent, final Runnable runnable, String msg) {
if (StringUtils.isEmpty(msg)) {
msg = "processing...";
}
final ProgressDialog waitingDialog = ProgressDialog.show(parent, "Please Wait...", msg, true);
//execute in a new thread instead of UI thread
ThreadPoolUtil.execute(new Runnable() {
public void run() {
try {
//some time-consume operation
runnable.run();
} catch (Exception e) {
e.printStackTrace();
} finally {
waitingDialog.dismiss();
}
//TODO: How to display a Toast message here? execute some code in UI Thread.
}
});
}
Ist und dort einige Worte über Android-UI-system? Wie ist es Thread-Safe ist, wie thread zusammen arbeitet und so weiter. Vielen Dank!
- werfen Sie einen Blick auf
AsyncTask
ist es am besten unterstützte Weg, developer.android.com/reference/android/os/AsyncTask.html - Vielen Dank für Ihre Hilfe und die Ressource links 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt mehrere Möglichkeiten, um dies zu tun,
Können Sie AsyncTask wie diese.
Nennen AsyncTask
new getAsynctask().execute("");
und hier ist die Klasse für geting Ergebnis.
Wann immer Sie arbeiten mit Gesonderten thread, das ist nicht dein UI-thread der beste Weg ist die Verwendung von Hf. Wann immer Sie wollen, um intime user aus Ihrem Thread, angenommen, ein Fortschritt dann eine Nachricht senden, um Handler zu so. Innen-Handler, die Sie behandeln können-Nachricht und schreiben Sie ein code-snippet zu Ändern, alles auf UI. Dies ist der bevorzugte Weg für Android. sehen Sie diese link1 , link2 & link3
Verwenden Sie diese AsynTask als innere Klasse von Ihrer Aktivität. Im tun, im hintergrund machen die zeitaufwändige Aufgabe, die Sie tun möchten, und dann auf postexecute-zeigen Sie den text der Meldung.
rufen Sie diese aus Ihrer Haupttätigkeit
Verwenden Sie einen hf:
Den Painless threading-Artikel aus dem android-developer-Ressourcen bietet verschiedene alternativen, abhängig von der spezifischen SDK-version.