我最近遇到一个问题,我从 Activity 中调用异步任务并返回一些数据。我的 UI 会卡住并且收到 ANR。我似乎通过对我认为可能的两件事(我正在实现的 asynctask 和 arraylist)使用解决方案的组合来解决它。
我在 asynctask 上有一个回调来异步加载数据。我猜想,尽管我很难弄清楚,异步任务在 onpostexecute 之后被保留了?无论如何,我在 onpostexecute 中调用了 this.cancel() 。
在阅读了一些内容之后,cancel() 函数似乎安排了要取消的任务,并且在发出请求后它可能会持续存在。所以我必须问是否有更好的方法在完成后取消异步任务?在大多数情况下,cancel() 就足够了吗?有没有办法在实现回调时完全避免调用cancel()。
最佳答案
我过去所做的是设置异步任务及其调用者可以看到的同步 boolean 值。当我想取消异步任务时,我将 boolean 值设置为 false(通常命名为 active)。在异步任务中,我在各个点检查标志,如果它为假(意味着它已被取消),那么我只是返回而不完成任务的其余部分。
在不了解您的具体情况的情况下,很难更具体。
希望对你有帮助 迈克
关于java - 取消异步任务的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17751910/