我注意到 AsyncTask 的文档 here线程上的工作完成后,您可以使用名为 get()
的方法来检索结果。文档说它
Waits if necessary for the computation to complete, and then retrieves its result.
这是否意味着如果我有这行代码:
List<Data> data = someAsyncTask.execute.get();
在主 UI 线程中,是否等待任务完成后再执行任何代码?如果是这样,这将使 AsyncTask 的使用变得无用。我在这里缺少什么?
AsyntTask.get()
是使用 onPostExecute()
将数据返回到主线程的替代方法吗?如果是这样,它安全吗?或者它的用途完全不同?
最佳答案
如果您调用 AsyncTask.get()
并且任务未完成,则当前线程将等待(并且可以被中断)。
没错,在 UI 线程中调用此方法会使 AsyncTask 无用。但是您可以在另一个需要此任务的结果以进一步执行的线程中调用它。
关于java - 使用 AsyncTask.get() 和 onPostExecute() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36020080/