2013-04-02 22 views
6

有沒有辦法在AsyncTask的doinbackground()中執行UI任務?我很清楚在onPostExecute方法中執行它更好。但在我的情況下,因爲我需要使用可重複使用的警報,能夠訪問我的doinbackground中的用戶界面將爲我節省很多時間。也就是說,我需要調整46個地方的代碼,但能夠在doinbackground中做到這一點將需要在一個地方進行更改。在Android中的doinbackground()中執行UI任務

在此先感謝

+0

http://developer.android.com/reference/android/os/AsyncTask.html。 – Raghunandan

+0

當你創建這個問題並在這裏發佈時,你可以很容易地編寫一些代碼並檢查發生了什麼。 – stinepike

+0

你有什麼嘗試? –

回答

22

希望這將解決您的問題

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

非常感謝這個例子:) – Lincy

+0

任何時候,如果這有助於upvote ....開心編碼:) –

5

比更新從onPostExecute() UI其他,有2種方式來更新UI:通過實施runOnUiThread()

  • onProgressUpdate()
  • FYI

    1. doInBackground()

      onProgressUpdate() - 只要您想更新doInBackground()的任何內容,您只需使用publishProgress(Progress...)發佈一個或多個進度單元,它將ping onProgressUpdate()以在UI線程上更新。

    +1

    感謝您的回覆。你gt我的問題。將嘗試runOnUiThread()。 onProgressUpdate()將再次變得乏味:) – Lincy

    +1

    感謝它似乎爲我工作:) – Lincy

    +0

    我不同意doInBackround(),其sux中的runOnUiThread的用法,它破壞了後臺處理的主要目的。 – Sajmon

    3

    你可以利用onProgressUpdate

    Docs

    相關問題