Wie führe ich Code im Android-UI-Thread async aus?

8

Ich bin neu in der Android-Entwicklung. Ich arbeite seit einigen Jahren an Swing und SWT. Sowohl Swing als auch SWT verfügen über eine Strategie, Code in der Synchronisierung von Benutzeroberflächenthreads und Async auszuführen. Die typische Verwendung besteht darin, Mitarbeiter mit Zeitaufwand in einem Thread zu verwenden und dann das Ergebnis im Async-Thread für die Benutzeroberfläche anzuzeigen.

Also meine Frage ist, gibt es ähnliche Stratege in Android? Hier ist mein Code. Der Parameter Runnable ist ein zeitaufwendiger Code. Diese Methode zeigt während der Ausführung einen wartenden Dialog an, dann EXPECT, um nach Abschluss einen Toast anzuzeigen. Aber der Toast muss im UI-Thread angezeigt werden. Also, wie geht das?

%Vor%

Und gibt es ein paar Worte zum Android-UI-System? Wie ist es Thread-Safe, wie Thread zusammen arbeitet und so weiter. Vielen Dank!

    
DeepNightTwo 07.02.2012, 08:48
quelle

6 Antworten

7

Dafür gibt es mehrere Möglichkeiten,

  • AsyncTask -
  

AsyncTask ermöglicht die ordnungsgemäße und einfache Verwendung des UI-Threads. Diese Klasse   ermöglicht es, Hintergrundoperationen durchzuführen und Ergebnisse auf der Benutzeroberfläche zu veröffentlichen   Thread, ohne Threads und / oder Handler manipulieren zu müssen. Example for using AsyncTask

  • Service -
  

Ein Service ist eine Anwendungskomponente, die entweder ein   Wunsch der Anwendung, einen länger andauernden Betrieb durchzuführen, während dies nicht der Fall ist   Interaktion mit dem Benutzer oder Bereitstellung von Funktionalität für andere   Anwendungen zu verwenden. Example for Using Service.

  • IntentService -
  

IntentService ist eine Basisklasse für Dienste, die asynchron arbeiten   Anfragen (ausgedrückt als Intents) auf Anfrage. Clients senden Anfragen   durch startService (Intent) -Aufrufe; der Dienst wird nach Bedarf gestartet,   Behandelt jede Absicht nacheinander mit einem Arbeitsthread und stoppt sich selbst   wenn es keine Arbeit mehr hat. Example for using IntentService.

    
Lalit Poptani 07.02.2012, 09:01
quelle
7

Sie können AsyncTask wie folgt verwenden.

So rufen Sie AsyncTask

auf

new getAsynctask().execute("");

und hier ist die Klasse für das Ergebnis.

%Vor%     
prakash 07.02.2012 09:01
quelle
2

Wenn Sie mit einem separaten Thread arbeiten, der nicht Ihr UI-Thread ist, verwenden Sie am besten Handler. Wann immer Sie den Benutzer von Ihrem Thread aus vertraut machen wollen, nehmen Sie einen Fortschritt an und senden Sie eine Nachricht an Handler. Inside Handler können Sie Nachrichten verarbeiten und ein Code-Snippet schreiben, um Änderungen an der Benutzeroberfläche vorzunehmen. Dies ist der bevorzugte Weg für Android. Siehe diese link1 , link2 & amp; link3

    
Pawan 07.02.2012 08:57
quelle
2

Sie verwenden diese AsynTask als innere Klasse Ihrer Aktivität. Im Hintergrund tun Sie die zeitraubende Aufgabe, die Sie tun möchten, und dann in postexecute können Sie die Textnachricht zeigen. Ruf dies von deiner Haupttätigkeit an

%Vor%     
farhana haque 07.02.2012 08:59
quelle
2

Benutze einen Handler:

%Vor%     
Prexx 07.02.2012 08:59
quelle
1

Der Schmerzfreie Threading-Artikel von den Android-Entwickler-Ressourcen bietet verschiedene Alternativen je nach spezifische SDK-Version.

    
Pau Giner 07.02.2012 08:58
quelle