使用AsyncTask.get()和onPostExecute()之间的区别

时间:2016-03-15 19:11:35

标签: java android multithreading android-asynctask

我已经注意到AsyncTask here的文档,您可以使用名为List<Data> data = someAsyncTask.execute.get(); 的方法在线程上的工作完成后检索您的结果。文档说它

  

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

这是否意味着如果我有这行代码:

AsyntTask.get()

在主UI线程中,是否等待任务完成后再执行任何代码?如果是这样,这将使AsyncTask的使用变得毫无用处。我在这里缺少什么?

onPostExecute()是使用{{1}}将数据返回主线程的替代方法吗?如果是这样,它安全吗?或者它用于完全不同的东西?

1 个答案:

答案 0 :(得分:2)

如果您致电AsyncTask.get()并且任务未完成,则当前线程将等待(并且可以中断)。

是的,在UI线程中调用此方法会使AsyncTask失效。但是你可以在另一个需要此任务结果的线程中调用它来进一步执行。