【发布时间】:2016-03-16 06:34:48
【问题描述】:
从长远来看,AsyncTask 会产生内存泄漏:如果 AsyncTask 持续 长期以来,它使活动保持“活跃”,而 Android 想要 摆脱它,因为它不再显示。活动不能 垃圾收集,这是 Android 的核心机制 保留设备上的资源。
这是否意味着如果我们调用 finish() 方法并且 asynctask 正在运行,那么活动也会保持“活动”?如果不是,那么这意味着什么
如果 AsyncTask 持续很长时间,它会保持活动“活动”吗?
除非我们调用finish() 方法或者我们按下返回按钮,否则Activity 将是活跃的。这是否意味着如果asyntask 正在运行,那么即使在那之后Activity 也会活跃?
【问题讨论】:
-
我不太确定,但我的理解是,只要 asyncTask 正在运行并且系统不会自动完成,该活动就会保持活动状态。 android系统是一种“自我清理”机制,如果资源急需,它会杀死未使用的应用程序甚至正在运行的应用程序。但是,如果您完成活动,我认为该活动已被破坏,因为您直接自己调用它而不是从系统调用它。如果您按下后退按钮,则活动通常不会被破坏,除非您在 onBackButtonPress() 中调用 finish()。
标签: android android-activity android-asynctask