2

我想处理来自AsyncTask课堂外的返回结果。

例如,使用 有什么缺点Location loc = TheClass.execute().get();吗?我应该在课堂内
处理结果吗?onPostExecute

4

4 回答 4

2

get() 方法不是很好的方法,因为它停止了 UI 线程

于 2012-06-19T09:10:04.137 回答
1

唯一可以确保您开始的操作doInBackground()已经完成的地方是回调方法onPostExecute()。因此,就目前而言,使用 get() 并不是一个明智的想法AsyncTask

于 2012-06-19T09:12:03.527 回答
0

get() 让您(当前线程)等到结果到来并且 onPostExecute 异步工作,并且在后台工作完成后像回调一样工作。

http://developer.android.com/reference/android/os/AsyncTask.html#get()

公开最终结果获取()

如有必要,等待计算完成,然后检索其结果。

于 2012-06-19T09:08:06.417 回答
0
get()

get() 的目的是阻塞直到获得结果。这可能很有用,例如,如果您有多个任务,其中一个使用另一个。一个任务可以启动另一个任务并调用 get() 以等待它完成,然后再继续自己的工作。

onPostExecute (Result result)

在 doInBackground(Params...) 之后在 UI 线程上运行。指定的结果是 doInBackground(Params...) 返回的值。

如果任务被取消,则不会调用此方法。

于 2012-06-19T09:11:56.367 回答