我使用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. AsyncTask的doInBackground方法阻止UI线程
- 2. 从AsyncTask调用UI线程方法
- 3. 的AsyncTask无法调用doInBackground方法
- 4. 如何在doInBackground方法中调用UI或UI线程
- 5. Android:如何从AsyncTask调用非静态方法(通过doInBackground)
- 6. AsyncTask doInBackground方法中的WebView?
- 7. 停止AsyncTask doInBackground方法
- 8. 在Android中停止AsyncTask doInBackground方法
- 9. Android的 - 方法必须从UI线程
- 10. Android AsyncTask:在主线程或后台线程中执行doInBackground()内部调用的方法吗?
- 11. 如何将JSONObject从doInBackground()方法返回到AsyncTask上的onPostExecute()方法?
- 12. 的AsyncTask doInBackground方法 - 参数误差
- 13. Android:是在主UI线程上调用View.onClick()方法吗?
- 14. 方法getText()必须从UI线程调用(Android Studio)
- 15. Android Studio错误:必须从UI调用方法getText()线程
- 16. 什么是从UI线程暂停AsyncTask的正确方法
- 17. 在UI线程中调用parseNetworkResponse方法
- 18. 调用Thread.sleep()方法中的AsyncTask doInBackground时间比预期要
- 19. 针对主UI线程的Looper.prepare()和Looper.loop()的方法调用android
- 20. Android的 - 如何适应的AsyncTask doInBackground方法
- 21. 反复调用方法Android的线程
- 22. 线性布局中的Android AsynchTask - 必须从UI调用方法线程
- 23. 为什么即使AsyncTask在internalHandler中使用Looper.getMainLooper(),也必须在UI线程上调用AsyncTask的execute()方法?
- 24. Android - 使用AsyncTask调用方法会中断其他方法
- 25. 无法调用AsyncTask doInBackground()和onPostExecute
- 26. 如何从主线程上的线程调用方法?
- 27. 从UI线程运行的Fragment中调用Activity方法吗?
- 28. 从Asynctask的onPostExecute()方法调用onResume()方法
- 29. 如何在使用TPL时在UI线程上调用方法?
- 30. android studio“插入应用程序”方法gettext必须从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