【问题标题】:Difference between using AsyncTask.get() and onPostExecute()使用 AsyncTask.get() 和 onPostExecute() 的区别
【发布时间】:2016-07-01 09:53:36
【问题描述】:

我在 AsyncTask here 的文档中注意到,一旦线程上的工作完成,您可以使用名为 get() 的方法来检索结果。文档说它

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

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

List<Data> data = someAsyncTask.execute.get();

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

AsyntTask.get() 是否可以替代使用onPostExecute() 将数据返回到主线程?如果是这样,它安全吗?还是它的用途完全不同?

【问题讨论】:

  • 不,你是对的,使用get 会使异步任务无用

标签: java android multithreading android-asynctask


【解决方案1】:

如果你调用AsyncTask.get()并且任务没有完成,那么当前线程将等待(并且可以被中断)。

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

【讨论】:

  • 哦,我明白了,我没想到在嵌套线程中使用它,然后让它变得有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 2019-04-02
  • 2010-11-09
  • 2017-01-30
相关资源
最近更新 更多