【发布时间】:2012-12-26 20:18:07
【问题描述】:
我正在尝试将活动中的变量设置为我的 AsyncTask 的结果。我读到我无法返回变量,我必须在我的活动中设置变量,然后在 onPostExecute 方法中更改它。
我的问题是,在 AsyncTask 完成后,我需要使用该变量。我遇到了这个问题,因为到目前为止我尝试过的所有解决方案都会导致 UI 冻结然后无响应。
到目前为止我所尝试的:
while (!task.isCancelled()) {
// Wait...
}
和
while (variable == null) {
// Wait ...
}
我正在做的是将变量从 AsyncTask 传递到我的 Activity 的最佳方式吗?如果是这样,我如何在不锁定 UI 的情况下等待任务在 Activity 中完成?
【问题讨论】:
-
您不应该“等待”
AsyncTask。完成后它应该做点什么,可能在onPostExecute()。 -
在
onPostExecute()方法中,我将活动中的变量更改为结果。我想做的是等到变量改变。 -
完全正确——不要这样做。
AsyncTask的onPostExecute()本身应该开始您希望在任务完成后发生的一系列事件。没有其他代码应该依赖该任务。