取消没有实例的异步任务(Android)

Cancel asynctask without instance (Android)

我在 android 中的一个 activity 中有多个异步任务,我通常这样称呼它们:

new call_SOAPCheck().execute();

或者像这样

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

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

有没有办法在没有实例的情况下终止异步任务运行?

我这样称呼它们的原因是我需要在同一个 activity 中多次执行它们,如果我将它们声明为 "global" 变量,我会得到一个错误,我只能执行一次。

此外,我的异步任务中没有循环,所以我无法定期检查 isCancelled()

为什么不保留一个引用,然后重新创建它们:

而不是这样做:

new call_SOAPCheck().execute();

这样做:

//keep a global ref

call_SOAPCheck task; 

然后每当你想一次又一次调用任务时,一遍又一遍地重新创建。通过这样做:

private void callTaskAgain(){

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

}