等待ASyncTask完成或变量设置

时间:2012-12-26 20:18:07

标签: android android-asynctask

我正在尝试将活动中的变量设置为我的AsyncTask的结果。我已经读过,我无法返回变量,我必须在我的活动中设置变量,然后在onPostExecute方法中更改它。

我的问题是AsyncTask完成后我需要使用该变量。我遇到了麻烦,因为到目前为止我尝试的所有解决方案都会导致用户界面冻结,然后无响应。

到目前为止我尝试过:

while (!task.isCancelled()) {
    // Wait... 
}

while (variable == null) { 
    // Wait ...
}

我正在做的是将变量从AsyncTask传递给我的Activity的最佳方法吗?如果是,那么如何在不锁定UI的情况下等待任务完成活动?

2 个答案:

答案 0 :(得分:49)

如果你依赖于AsyncTask的结果,你可以这样做。

Object result = asyncTask.execute().get();

结果的类型是doInBackground()方法中的返回类型。但是你的主线程将等待任务完成。

答案 1 :(得分:14)

在函数中更改变量后,只需放置要执行的代码,然后从onPostExecute调用此函数。