是否有取消所有正在运行的Asynctask实例?提前谢谢。
我想取消按下后退按钮的进度对话框,同时取消同一段代码中asynctask的所有实例。
答案 0 :(得分:2)
您无法取消所有 对 EACH 个别AsyncTask的引用。
阅读有关cancel()确实形成AsyncTask的文档。
一旦你有了对每个AsyncTask的引用,你就可以取消每个AsyncTask。
答案 1 :(得分:1)
使用以下代码取消运行asynctask
if(myAsyncTask.getStatus().equals(AsyncTask.Status.RUNNING))
{
myAsyncTask.cancel(true);
}
答案 2 :(得分:1)
我可以解决它在OnStop()
中制作一个标志1-宣布全球
int flagOnStop=0;
2-声明所有全局AsyncTask - >
Async_Task asyncTask1,asyncTask2,asyncTaskn;
3-在执行之前,请求flagOnStop - >
if(flagOnStop==0{
asyncTask1=new Async_Task();
asyncTask1.execute();
asyncTask2=new Async_Task();
asyncTask2.execute();
asyncTaskn=new Async_Task();
asyncTaskn.execute();
}
4-当你的活动停止时,使旗帜等于一个
@Override
public void onStop() {
super.onStop();
flagOnStop=1;
asyncTask.cancel();
asyncTask2.cancel();
asyncTaskn.cancel();
}
答案 3 :(得分:0)
在您的活动中(或asynctasks可见的任何地方)和asynctask do中设置一个布尔标志:
while (flag) {
your_logic;
}
当按下后将标志设置为false并且每个asynctask都应该自行停止 - 那么你不需要引用asyntasks本身,因为它们将完成所有的工作。
答案 4 :(得分:0)
找到解决方案:我在上传Digial.show()之前添加了一个动作监听器:
uploadingDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
public void onCancel(DialogInterface dialog) {
myTask.cancel(true);
//finish();
}
});
当我按下后退按钮时,上面的OnCancelListener取消了对话框和任务。如果要在后退时完成整个活动,也可以添加finish()。请记住将异步任务声明为如下变量:
MyAsyncTask myTask=null;
执行你的异步任务:
myTask = new MyAsyncTask();
myTask.execute();