取消没有实例的异步任务(Android)
Posted
技术标签:
【中文标题】取消没有实例的异步任务(Android)【英文标题】:Cancel asynctask without instance (Android) 【发布时间】:2020-08-30 01:38:16 【问题描述】:我在 android 的一个活动中有多个异步任务,我通常这样称呼它们:
new call_SOAPCheck().execute();
或者像这样
new MainActivity.DownloadTask(getApplicationContext()).execute("http://.....");
我想在按下后退按钮时取消任何正在运行的异步任务,但由于我没有创建实例,我无法调用 .cancell(true)。
有没有办法杀死没有实例运行的异步任务?
我这样称呼它们的原因是我需要在同一个活动中多次执行它们,如果我将它们声明为“全局”变量,我会收到一个错误,我只能执行一次。
另外,我的 asynctask 中没有循环,所以我不能定期检查 isCancelled()
【问题讨论】:
【参考方案1】:为什么不保留参考并重新创建它们:
不要这样做:
new call_SOAPCheck().execute();
这样做:
//keep a global ref
call_SOAPCheck task;
然后,每当您想一次又一次地调用任务时,只需一遍又一遍地重新创建。通过这样做:
private void callTaskAgain()
task = new call_SOAPCheck();
task.execute();
【讨论】:
以上是关于取消没有实例的异步任务(Android)的主要内容,如果未能解决你的问题,请参考以下文章