取消不带实例的异步任务(Android)

问题描述 投票:0回答:1

我在android的一个活动中有多个asynctask,我通常这样称呼他们:

new call_SOAPCheck().execute();

或这样

new MainActivity.DownloadTask(getApplicationContext()).execute("http://.....");

[我想取消按下后退按钮时正在运行的任何异步任务,但是由于我没有创建实例,所以我无法调用.cancell(true)。

有没有办法杀死没有实例运行的异步任务?

之所以这样称呼他们,是因为我需要在同一活动中多次执行它们,如果我像“全局”变量那样声明它们,则会收到一个错误,我只能执行一次。

而且,我的asynctask内没有循环,所以我不能定期检查isCancelled()

android android-asynctask
1个回答
0
投票

为什么不保留引用,并重新创建它们:

而不是这样做:

new call_SOAPCheck().execute();

执行此操作:

//keep a global ref

call_SOAPCheck task; 

然后,只要您想一次又一次地调用任务,就一次又一次地重新创建。通过这样做:

private void callTaskAgain(){

task = new call_SOAPCheck();
task.execute();

}
© www.soinside.com 2019 - 2024. All rights reserved.