我最近遇到了一个问题,我从一个活动中调用了一个异步任务并返回了一些数据。我的 UI 会冻结,我收到 ANR。我似乎已经通过对我认为可能的两件事使用解决方案的组合来解决它,包括我正在实现的 asynctask 和 arraylist。
我在 asynctask 上有一个回调来异步加载数据。我猜想,虽然我很难弄清楚,在 onpostexecute 之后 asynctask 是否被保留?无论如何,我在 onpostexecute 中调用了 this.cancel()。
在阅读了一点之后,似乎 cancel() 函数安排了要取消的任务,并且它可能在发出请求后仍然存在。所以我必须问有没有更好的方法在你完成后取消异步任务?在大多数情况下 cancel() 就足够了吗?有没有办法在实现回调时完全避免调用 cancel()。