我使用AsyncTask將數據上傳到UI。我寫了代碼從一個單獨的方法從服務器下載數據,我從doinBackground調用該方法。它會給出錯誤,因爲UI方法不能從doInBackground訪問,但是我想訪問。任何替代進程都可以從doinBackground訪問UI方法。Android:從AsyncTask調用UI線程上的方法doInBackground方法
15
A
回答
47
任何可供選擇的方法是存在的,以從doinBackground訪問UI方法。?
致電publishProgress()
在doInBackground()
。把你的UI更新邏輯放在AsyncTask
的onProgressUpdate()
中。在調用publishProgress()
之後,將在主應用程序線程(a.k.a.,UI線程)上調用onProgressUpdate()
。 Here is a sample project證明了這一點。
7
1
正如其他人指出的,你可以使用runOnUiThread。但是,在doInBackground中你會想要做到這一點似乎有點奇怪。如果您想要向用戶指示進度,您希望在AsyncTask.onProgressUpdate中處理該進度,並在doInBackground中調用publishProgress。
你可以閱讀更多有關的AsyncTask這裏:http://developer.android.com/reference/android/os/AsyncTask.html
-Dan
1
使用doInBackground()
只是任務是:
- 花一些時間
- 是不是UI相關
然後你可以執行AsyncTask.onPostExecute()
運行代碼來的AsyncTask
從JavaDoc的處理上主UI線程的結果AsyncTask.onPostExecute()
:
doInBackground之後的UI線程上「運行。 ......「
相關問題
- 1. Android:如何從AsyncTask調用非靜態方法(通過doInBackground)
- 2. AsyncTask doInBackground方法中的WebView?
- 3. 停止AsyncTask doInBackground方法
- 4. 在Android中停止AsyncTask doInBackground方法
- 5. Android AsyncTask:在主線程或後臺線程中執行doInBackground()內部調用的方法嗎?
- 6. 的AsyncTask doInBackground方法 - 參數誤差
- 7. Android:是在主UI線程上調用View.onClick()方法嗎?
- 8. 什麼是從UI線程暫停AsyncTask的正確方法
- 9. 在UI線程中調用parseNetworkResponse方法
- 10. Android的 - 如何適應的AsyncTask doInBackground方法
- 11. 無法調用AsyncTask doInBackground()和onPostExecute
- 12. 反覆調用方法Android的線程
- 13. Android - 使用AsyncTask調用方法會中斷其他方法
- 14. 如何從主線程上的線程調用方法?
- 15. 從AsyncTask的doInBackground方法中檢索return語句?
- 16. AsyncTask調用本地方法
- 17. 在AsyncTask中調用方法?
- 18. 從UI線程運行的Fragment中調用Activity方法嗎?
- 19. android studio「插入應用程序」方法gettext必須從UI線程調用
- 20. 如何在使用TPL時在UI線程上調用方法?
- 21. 方法的AsyncTask的Android OAuth2Client
- 22. doInBackground方法完成後從AsyncTask類對象檢索arraylist
- 23. 方法getText()必須從UI調用線程
- 24. 在主線程上調用方法?
- 25. 線程內調用方法
- 26. Android AsyncTask塊UI線程
- 27. 如何在工作線程中調用UI線程上的方法?
- 28. 例外doInBackground方法
- 29. 從方法中調用方法取消了主線程
- 30. 從單獨的線程調用UI方法,但不參考UI控件
CommonsWare的名字就夠了。 +1。 – 2012-03-15 12:10:33
+1對於明確的答案 – 2012-03-15 12:11:01
知道runOnUiThread()的方式,但喜歡處理此+1的另一種方法。 – Deva 2012-03-15 12:11:43