为什么关闭的Android活动似乎保留对象

本文关键字:保留 对象 活动 Android 为什么 | 更新日期: 2023-09-27 18:17:25

第一次问这里。我正在使用Xamarin开发一个简单的Android应用程序。在主活动中,我有一个按钮,在选项卡视图安排中启动第二个带有2个片段的活动。我使用后退按钮或调用finish()关闭该活动。使用调试器,当我再次启动第二个活动时,我注意到在片段中声明的所有对象都不是空的,并且似乎仍然被实例化了。为什么再次启动活动不应该像第一次启动一样?我错过了什么?谢谢。

为什么关闭的Android活动似乎保留对象

垃圾收集器不会在每次调用finish时清理对象,它会在内存满或需要空间时清理对象。所以,如果你不给你的对象值"null"在OnDestroy()方法中,他们可能仍然存在,当你重新启动你的第二个活动。将活动中的对象设置为null并不能保证垃圾收集器更快地收集它们,但它可以帮助GC看到活动可以从内存中删除。

有一些类型的对象声明,你需要小心,因为他们可以创建一个引用你的类,永远不会被设置为null,这将导致内存泄漏在你的应用程序(活动不能从堆中删除,并不断被重新创建)。这里有一些关于如何避免内存泄漏的提示!

这里有一个关于内存管理和对象生命周期的有趣讨论。我建议你也去看看!