2011-01-10 11 views
3

Ich habe eine Aktivität, die Informationen von einem Remote-Server abruft und in einer TableLayout anzeigt. Die Funktion, die die Informationen vom Server abruft, hat ihr eigenes Timeout, und eine Ausnahme wird ausgelöst, wenn das Timeout überschritten wird.Lange Operationen auf Activity onCreate()

Jetzt, wenn die Aktivität geladen wird, möchte ich, dass die Funktion ausgelöst wird und ein Fortschrittsdialog angezeigt wird, während die Funktion funktioniert, und ausgeblendet wird, wenn die Funktion ausgeführt wird oder wenn eine Zeitüberschreitungsausnahme ausgelöst wurde.

Das Problem: Ich habe den Code, der alle oben beschriebenen Funktionen in der onCreate() -Funktion durchführen. Auf dem Bildschirm des Emulators wird nichts angezeigt, da die onCreate() -Funktion noch nicht beendet ist ...

Ich habe auch versucht, den Code in die onStart() -Funktion zu setzen ... gleiche unerwünschte Ergebnisse ...

ich versuche, mit der Threads zu vermeiden, da die Funktionalität viele Variablen, dass der Thread benötigt keinen Zugriff auf sie hat ...

Wie kann ich das gewünschte Verhalten implementieren ??

Danke.

Antwort

3
  • Erstellen Sie eine Klasse Runnable Implementierung und setzen alle Ihre Logik Last drin. Rufen Sie eine Funktion in der Aktivität, wenn sie beendet ist (lässt onFinished(params...) sagen)
  • eine Benutzeroberfläche erstellen Handler und erhalten den Handler UI in onFinished(params...)
  • Erstellen Sie einen Thread in onCreate und beginnen, es zu aktualisieren, da Ihre Runnable zu nennen.