如果应用程序变为后台,则取消asynctask,如果应用程序出现前台恢复asynctask则会被杀死

时间:2014-12-14 09:26:09

标签: android android-asynctask

我一直在下载图片并将其保存到异步任务中的sdcard如果应用程序变为后台并且被杀死下载将是不完整的,所以取消onstop中的异步任务并删除下载的图像以便不会有任何不完整images.问题发生在我按下主页按钮并恢复后,我已经在这里重新启动取消的异步任务。任何人都可以帮我解决这个问题

2 个答案:

答案 0 :(得分:0)

不要使用onStop()。在onPause()中暂停任务,在onResume()中恢复它。

答案 1 :(得分:0)

cancel()类的AsyncTask方法将设置取消标记。您可以使用AsyncTask方法在isCancelled()中查看,以确定在这种情况下该怎么做。

onStop()中,您可以cancel()。取消发生时,您可以保存任何处理对某些持久存储的处理。然后,重新执行AsyncTaskonRestart()中的onResume()。不用说,您的编码逻辑必须适应所有这些。

为什么不在SQLite中保存图像的URL并标记下载的图像,而不是删除下载的图像?任务重新启动时,只下载尚未下载的任务。这样可以节省带宽。

至于主页按钮,您不能覆盖它的行为。相反,请使用onUserLeaveHint()方法:

  

当活动即将到来时,被称为活动生命周期的一部分   作为用户选择的结果进入后台。例如,何时   用户按下Home键,将调用onUserLeaveHint()