我遇到了我的 Activity 被暂停的情况,并且通过 onPause()
方法我取消了我的 AsyncTask
。但是,我的日志按时间顺序显示以下事件:
OnPause
已调用AsyncTask
已从OnPause
取消。cancel(false)
返回true
表示任务已成功取消。
尽管 contract that it won't ever be called if cancelled 仍会调用 onPostExecute
.
有人看过这个吗? LogCat 消息是否能保证以准确的顺序呈现?
最佳答案
据我所知,LogCat
消息的顺序是正确的。
问题可能是,您的 AsyncTask
无法取消。在 AsyncTask
上调用 Cancel()
并不能保证取消它。您可以将参数 boolean mayInterruptIfRunning
设置为 true。然而,即使将其设置为 true 后,它也对我不起作用。
您可以在onCancelled()
方法中检查AsyncTask是否被取消。如果控件到达此方法,则意味着它被取消。
看看 this 中的答案和 this问题。
关于android - AsyncTask 是否存在并发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11858307/