活动onStop()和破坏过程

时间:2017-11-12 18:32:46

标签: android android-activity memory-leaks

我对android" Activity lifecycle"的这一部分的含义表示怀疑。教程:

  

使用onStop()释放可能泄漏内存的资源也很重要,因为系统可以在不调用活动的最终onDestroy()回调的情况下终止托管您活动的进程。

据我所知,当进程被杀死时,所有与之关联的内存都被释放。泄漏是指具有较大范围的组件拥有对具有较小范围的组件的引用(对上下文,处理程序,内部类等的静态引用)的情况。但是如果一个进程已经死了,那么就没有任何组件存在。是的,其中一些可以在以后重新创建,但他们不会引用一些旧的"来自过去的组件。任何人都可以举例说明杀死进程可能导致内存泄漏的情况?或者我(我的一些)假设完全错了吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

看,如果你没有使用onStop(),那么静态变量或引用的内存泄漏就会泄漏。因为,在调用onDestroy()之前,它们不会被销毁。一些例子是 -

1:停止/关闭您不再需要的任何服务/文件/连接。

2:不要将任何Drawable存储在任何静态对象中,Drawables会保留对其所有者View的引用,其中包含对其所有者Activity的引用,因此如果您持有任何Drawable,您将保留不必要的很多物体/记忆

因此,您应始终关闭连接或将onStop()中的静态视图的初始化设置为null,以防止内存泄漏。希望它清除:)

答案 1 :(得分:0)

文档中的措辞不好。当您的操作系统进程被终止时,将回收所有内存。在这种情况下,没有内存泄漏。