java - 使用 AsyncTask.get() 和 onPostExecute() 的区别

标签 java android multithreading android-asynctask

我注意到 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/

相关文章:

从右到左阅读的语言的 Java 消息属性选择

android - Kotlin 中的重复 MutableSet

android - 使用 Phonegap 在 android 上捕获后使用 FileReader 读取视频文件

c# - 了解 System.Threading.Tasks 行为

mysql - gtk2 和线程中的段错误

java - 将 JPanel 设置为与其包含的 JTable 相同的大小

java - EditText一次性全部setError

java - 安全发布数组元素

java - 如何使用 jackson 从嵌套的 Json 字符串中获取 2 个值

Android 相机 Intent 仅在平板电脑中失败