Android后台线程和活动关系?

时间:2013-05-29 04:29:00

标签: android android-activity activity-lifecycle background-thread

我的Android应用程序使用AsyncTask从网站下载一些数据。

但是当我在活动开始后立即按下我的Android设备的后退按钮时,会调用工作线程的 onPostExecute 方法,这很奇怪,因为android之前称为 onDestroy 方法到onPostExecute并且onPostExecute方法在我认为不再存在的主UIThread上运行。

任何人都可以帮助我,我不明白吗?

1 个答案:

答案 0 :(得分:2)

AsyncTask基本上是在后台执行你想要的东西,作为一个独立于UI的线程。因此,当您退出UI时,这并不一定意味着您已经杀死了AsyncTask。它将继续它的常规生命周期并以onPostExecute结束。如果您想要杀死AsyncTask,那么您必须为cancel()调用AsyncTask函数。

知道这一点,你实际上无法杀死AsyncTask这将由Android本身完成。因此,您必须等待一段时间,直到当前任务被终止(如果您致电cancel()),以便重新启动此特定AsyncTask

您还应该阅读onCancelled()方法。有关详细信息,请查看documentation

如果我犯了任何错误,请纠正我。