我正在尝试将活动中的变量设置为我的AsyncTask的结果。我已经读过,我无法返回变量,我必须在我的活动中设置变量,然后在onPostExecute
方法中更改它。
我的问题是AsyncTask完成后我需要使用该变量。我遇到了麻烦,因为到目前为止我尝试的所有解决方案都会导致用户界面冻结,然后无响应。
到目前为止我尝试过:
while (!task.isCancelled()) {
// Wait...
}
和
while (variable == null) {
// Wait ...
}
我正在做的是将变量从AsyncTask传递给我的Activity的最佳方法吗?如果是,那么如何在不锁定UI的情况下等待任务完成活动?
答案 0 :(得分:49)
如果你依赖于AsyncTask的结果,你可以这样做。
Object result = asyncTask.execute().get();
结果的类型是doInBackground()方法中的返回类型。但是你的主线程将等待任务完成。
答案 1 :(得分:14)
在函数中更改变量后,只需放置要执行的代码,然后从onPostExecute调用此函数。