我想等到我的AsynTask
完成后再继续。
但状态始终显示为 RUNNING 。
如何回复AsyncTask
信号已经完成了?
为什么我的while循环无穷无尽?我认为一旦onPostExecute()
被调用就完成了任务
状态变为FINISHED。
private void methodOne(Context context) {
MyNewTask getMyTask = null;
try {
getMyTask = new MyNewTask(context, null, null, param1);
getMyTask.execute(getUrl());
while(getResourceTask.getStatus().equals(AsyncTask.Status.RUNNING)){
Log.i("log", "STATUS : " + getMyTask.getStatus());
}
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
此方法是否在UI线程中执行?如果是这样,onPostExecute()
将无法执行(UI线程被阻止)。
您通常不会等待AsyncTask通过循环完成。这是一种严重的代码味道。
你应该在onPostExecute()
开始你想做的任何事情。
所以,而不是
task.execute();
while(task.getStatus().equals(AsyncTask.Status.RUNNING)) {};
doSomeWork();
您应该使用:
task.execute();
和
void onPostExecute(Param... params) {
doSomeWork();
}
doSomeWork()
是类中调用AsyncTask
的方法。通过这种方式,您可以了解任务已完成。