gpt4 book ai didi

c# - 为什么关闭的 Android Activity 似乎保留对象?

转载 作者:行者123 更新时间:2023-11-29 21:03:31 25 4
gpt4 key购买 nike

第一次来这里提问。我有一个使用 Xamarin 开发的简单 Android 应用程序。在主要 Activity 中,我有一个按钮可以启动第二个 Activity ,其中包含选项卡 View 排列中的 2 个 fragment 。我关闭该 Activity ,使用后退按钮或调用 finish()。使用调试器,当我再次启动第二个 Activity 时,我注意到 fragment 中声明的所有对象都不为 null,并且似乎仍被实例化。为什么会这样,再次启动 Activity 不应该像我第一次启动一样吗?我错过了什么?谢谢。

最佳答案

垃圾收集器不会在您每次调用 finish 时清理您的对象,它会在内存已满和需要空间时清理对象。因此,如果您没有在 OnDestroy() 方法中为您的对象赋予值“null”,则当您重新启动第二个 Activity 时,它们可能仍然存在。将您的对象放在您的 Activity 中为 null 并不能保证垃圾收集器会更快地收集它们,但它会帮助 GC 确定可以从内存中删除该 Activity 。

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

有一个关于内存管理和对象生命周期的有趣谈话 here .我建议你也检查一下!希望这会有所帮助。

关于c# - 为什么关闭的 Android Activity 似乎保留对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25230204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com