2013-04-02 13 views
6

Gibt es eine Möglichkeit, UI-Task in der doinbackground() der AsyncTask zu tun. Ich bin mir bewusst, dass es besser ist, es in onPostExecute Methode zu tun. Aber in meinem Fall, da ich eine wiederverwendbare Warnung verwenden muss, würde es mir viel Zeit ersparen, auf die Benutzeroberfläche in meinem doinbackground zugreifen zu können. Das heißt, ich muss den Code an 46 Stellen anpassen, aber in der Lage sein, dies im doinbackground zu tun, wird die Änderung nur an einem Ort benötigt.UI-Task in doinbackground() in Android ausführen

Vielen Dank im Voraus

+0

http://developer.android.com/reference/android/os/AsyncTask.html lösen. – Raghunandan

+0

zu dem Zeitpunkt, als Sie diese Frage erstellt und hier gepostet haben, könnten Sie leicht Code schreiben und überprüfen, was passiert ist. – stinepike

+0

Was hast du probiert? –

Antwort

22

Hoffnung nutzen dies Ihr Problem

onPreExecute() { 
     // some code #1 
    } 

    doInBackground() { 
     runOnUiThread(new Runnable() { 
        public void run() { 
         // some code #3 (Write your code here to run in UI thread) 

        } 
       }); 
    } 

    onPostExecute() { 
     // some code #3 
    } 
+0

vielen Dank für dieses Beispiel implementierst :) – Lincy

+0

Anytime, Wenn dies geholfen Upvote .... glücklich Codierung :) –

5

Anders als UI von onPostExecute() aktualisieren, gibt es 2 Möglichkeiten UI zu aktualisieren:

  1. Von doInBackground() von runOnUiThread()
  2. Von onProgressUpdate()

FYI Implementierung,

onProgressUpdate() - Immer, wenn Sie etwas von doInBackground() aktualisieren möchten, müssen Sie nur publishProgress(Progress...) verwenden, um eine oder mehrere Einheiten des Fortschritts zu veröffentlichen, wird es onProgressUpdate() pingen, um auf UI-Thread zu aktualisieren.

+1

Vielen Dank für Ihre Antwort. Du hast mein Problem. Will runOnUiThread() versuchen. onProgressUpdate() würde wieder langweilig werden :) – Lincy

+1

danke es scheint für mich zu arbeiten :) – Lincy

+0

Ich stimme nicht mit einer Verwendung von runOnUiThread in doInBackround(), seine sux und es bröckelt Hauptzweck der Hintergrundverarbeitung. – Sajmon

3

könnten Sie onProgressUpdate eher

Docs

Verwandte Themen