2012-03-15 75 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线程上“运行。 ......“

相关问题