我想处理班级外AsyncTask
的返回结果。
是否有任何缺点,例如Location loc = TheClass.execute().get();
?
我应该在课堂内onPostExecute
处理结果吗?
答案 0 :(得分:2)
get()方法对它来说不是很好的方法,导致它停止了UI-thread
答案 1 :(得分:1)
唯一可以确保您在doInBackground()
中启动的操作已完成的地方是回调方法onPostExecute()
。因此,就AsyncTask
而言,使用get()并不是一个明智的想法。
答案 2 :(得分:0)
get()让你(当前线程)等到结果来了,onPostExecute确实异步工作,并在后台工作完成时像回调一样工作。
http://developer.android.com/reference/android/os/AsyncTask.html#get()
公共最终结果get()
如果需要等待计算完成,然后检索其结果。
答案 3 :(得分:0)
get()
get()的目的是阻塞直到获得结果。这个 可能很有用,例如,如果你有多个任务,一个人使用 另一个。一个任务可以启动另一个任务并调用get()来等待它 在继续自己的工作之前完成。
onPostExecute (Result result)
在doInBackground(Params ...)之后在UI线程上运行。指定的结果是doInBackground(Params ...)返回的值。
如果任务被取消,则不会调用此方法。