标签: c# android android-fragments xamarin xamarin.android
第一次问这里。 我有一个简单的Android应用程序,我正在使用Xamarin开发。 在主要活动中,我有一个按钮,用于在标签视图排列中启动带有2个片段的第二个活动。 我关闭该活动,使用后退按钮或调用finish()。 使用调试器,当我再次启动第二个活动时,我注意到片段中声明的所有对象都不是null并且似乎仍然被实例化。 为什么这个,不应该再次启动活动的行为就像我第一次启动一样?我错过了什么? 感谢。
答案 0 :(得分:2)
每次调用完成后,垃圾收集器都不会清理对象,它会在内存已满且需要空间时清理对象。所以如果你没有给你的对象赋值" null"在OnDestroy()方法中,当您重新启动第二个活动时,它们可能仍然存在。将您的活动中的对象置于null中将不会让垃圾收集器更快地收集它们,但它会帮助GC查看活动是否可以从内存中删除。
有一些类型的对象声明需要注意,因为它们可以创建一个永远不会被设置为null的类的引用,这将导致应用程序中的内存泄漏(活动无法从堆,并不断重新创建)。 Here是关于如何避免记忆泄漏的一些指示!
有关内存管理和对象生存期的有趣话题here。我建议你看看吧!希望这会有所帮助。