异步任务在完成之前是否被杀死如果是这样,当异步任务停止时,调用活动的生命周期会发生什么?

时间:2016-12-19 10:29:25

标签: android-asynctask

我有一个活动A,其任务需要在后台执行。所以我将任务发送到异步。

时活动生命周期会发生什么
myAsyncTask.cancel(true)
调用

,即异步任务被杀死。

1 个答案:

答案 0 :(得分:0)

根据Android Developers停止AsyncTask,

  

可以通过调用cancel(boolean)随时取消任务。调用此方法将导致后续调用isCancelled()返回true。调用此方法后,将在doInBackground(Object [])返回后调用onCancelled(Object)而不是onPostExecute(Object)。为确保尽快取消任务,应始终定期从doInBackground(Object [])检查isCancelled()的返回值(如果可能)(例如在循环内)。

并且对于“调用活动的生命周期会发生什么”我不太了解,您可以看到here活动的生命周期,但由于异步任务在后台执行,活动将继续工作,但根据android studio中找到的文档停止asynctask

  

默认实现只是调用onCancelled()并忽略结果。如果您编写自己的实现,请不要调用super.onCancelled(result)。

您可以在停止异步任务后自行实现如何处理,之后可能会恢复活动生命周期并正常工作。

我没有证实这一点,但如果我错了,请告诉我。