为了账号安全,请及时绑定邮箱和手机立即绑定

Android-强制取消AsyncTask

Android-强制取消AsyncTask

慕容708150 2019-08-03 03:03:11
Android-强制取消AsyncTask我在我的一项活动中实现了AsyncTask: performBackgroundTask asyncTask = new performBackgroundTask();  asyncTask.execute();现在,我需要实现“取消”按钮功能,所以我必须停止执行正在运行的任务。我不知道如何停止正在运行的任务(后台任务)。所以请建议我,我如何强制取消AsyncTask?最新情况:我发现Cancel()方法相同,但我发现调用cancel(boolean mayInterruptIfRunning)并不一定会停止后台进程的执行。所有这些似乎都发生在AsyncTask将执行onCanced(),并且在它完成时不会运行onPostExecute()。
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

检查一下isCancelled()偶尔:

 protected Object doInBackground(Object... x) {
    while (/* condition */) {
      // work...
      if (isCancelled()) break;
    }
    return null;
 }



查看完整回答
反对 回复 2019-08-05
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

这实际上取决于您在异步任务中所做的事情。

如果这是一个处理大量文件的循环,则只需在每个文件之后检查isCanced()标志是否被提升,如果是,则从循环中断开。

如果它是一个执行很长操作的一行命令,那么您就无能为力了。

最好的解决方法是不要使用异步任务的Cancel方法,而使用您自己的ancelFag布尔值。然后,您可以在postExecute中测试这个取消标志,以决定如何处理结果。



查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 409 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信