猿问

Android-强制取消AsyncTask

Android-强制取消AsyncTask

我在我的一项活动中实现了AsyncTask:

 performBackgroundTask asyncTask = new performBackgroundTask();
 asyncTask.execute();

现在,我需要实现“取消”按钮功能,所以我必须停止执行正在运行的任务。我不知道如何停止正在运行的任务(后台任务)。

所以请建议我,我如何强制取消AsyncTask?

最新情况:

我发现Cancel()方法相同,但我发现调用cancel(boolean mayInterruptIfRunning)并不一定会停止后台进程的执行。所有这些似乎都发生在AsyncTask将执行onCanced(),并且在它完成时不会运行onPostExecute()。



慕容708150
浏览 410回答 3
3回答

DIEA

检查一下isCancelled()偶尔: protected Object doInBackground(Object... x) {     while (/* condition */) {       // work...       if (isCancelled()) break;     }     return null;  }

慕侠2389804

这实际上取决于您在异步任务中所做的事情。如果这是一个处理大量文件的循环,则只需在每个文件之后检查isCanced()标志是否被提升,如果是,则从循环中断开。如果它是一个执行很长操作的一行命令,那么您就无能为力了。最好的解决方法是不要使用异步任务的Cancel方法,而使用您自己的ancelFag布尔值。然后,您可以在postExecute中测试这个取消标志,以决定如何处理结果。
随时随地看视频慕课网APP

相关分类

Android
我要回答