AsyncTask中是否存在并发错误?

时间:2012-08-08 05:43:37

标签: android concurrency android-asynctask onpause

我遇到了我的活动暂停的情况,并且从onPause()方法我取消了AsyncTask。但是,我的日志按时间顺序显示以下事件:

  1. OnPause名为
  2. AsyncTask已从OnPause取消。 cancel(false)返回true,表示任务已成功取消。
  3. 尽管contract that it won't ever be called if cancelled。,仍会调用
  4. onPostExecute

    有没有人见过这个? LogCat消息是否保证以准确的顺序显示?

1 个答案:

答案 0 :(得分:2)

据我所见,LogCat消息的顺序正确无误。

问题可能是,您的AsyncTask无法取消。在Cancel()上调用AsyncTask并非保证取消它的方式。您可以将参数boolean mayInterruptIfRunning用于true。然而,即使将其设置为true,它也从未对我有用。

如果AsyncTask被取消,您可以签入onCancelled()方法。如果控件达到此方法,则表示已取消 在thisthis问题中查看答案。