在我尝试为我的应用程序中的所有适配器抽象出常用功能时,我在查看困扰我的ArrayAdapter代码时遇到了一些问题。
据我所知,使用ListView的常见模式如下:
一瞥代码就会发现ListView存储了对适配器的强引用,而ArrayAdapter存储了对上下文的强引用,即我的Activity。这会产生一个强大的参考周期,这就是困扰我的一点。
我知道可以通过在onDestroy中将ListView引用设置为null来解决这个问题。但是在使用导致它的相同技术时,任何教程都不会讨论这个问题。
我的问题是我在这里遗漏了什么或者是常识吗?
答案 0 :(得分:2)
ARC 不是Java / Android正在使用的真实GC(垃圾收集器),因此它们具有不同的行为。其中一个行为是,对于ARC,开发人员可以打破任何循环引用以防止内存泄漏,但对于Android来说这是一个非问题,其GC可以在运行时自动检测这些引用并处理这些适当的对象。
总是很了解平台如何在平台下工作,这些信息可以帮助您区分两者并获得对GC的理解: