2012-03-15 130 views

回答

47

任何可供選擇的方法是存在的,以從doinBackground訪問UI方法。?

致電publishProgress()doInBackground()。把你的UI更新邏輯放在AsyncTaskonProgressUpdate()中。在調用publishProgress()之後,將在主應用程序線程(a.k.a.,UI線程)上調用onProgressUpdate()Here is a sample project證明了這一點。

+14

CommonsWare的名字就夠了。 +1。 – 2012-03-15 12:10:33

+0

+1對於明確的答案 – 2012-03-15 12:11:01

+0

知道runOnUiThread()的方式,但喜歡處理此+1的另一種方法。 – Deva 2012-03-15 12:11:43

7

呼叫runOnUiThread(可運行動作)

more here

+0

您好我可以調用runOnUiThread()從doInBackground?它會工作?還是像往常一樣我可以調用runOnUiThread從OnCreate中本身。?在這裏我有一個疑問。runOnUiThread會阻止用戶界面,而上傳數據 – 2012-03-15 12:05:07

+0

從doInBackground()調用它是有意義的,否則它沒有意義。 – ngesh 2012-03-15 12:06:44

+0

你必須編寫runOnUIThread來更新你的主UI。 – 2012-03-15 12:06:52

1

正如其他人指出的,你可以使用runOnUiThread。但是,在doInBackground中你會想要做到這一點似乎有點奇怪。如果您想要向用戶指示進度,您希望在AsyncTask.onProgressUpdate中處理該進度,並在doInBackground中調用publishProgress。

你可以閱讀更多有關的AsyncTask這裏:http://developer.android.com/reference/android/os/AsyncTask.html

-Dan

1

使用doInBackground()只是任務是:

  1. 花一些時間
  2. 是不是UI相關

然後你可以執行AsyncTask.onPostExecute()運行代碼來的AsyncTask

從JavaDoc的處理上主UI線程的結果AsyncTask.onPostExecute()

doInBackground之後的UI線程上「運行。 ......「

相關問題