dev*_*oid 28 static android memory-leaks event-listener inner-classes
我已经阅读了文章http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html.在本文中,建议使用带有WeakReference的静态内部类.许多内部类用于事件侦听器.那些内部类也会导致内存泄漏吗?那些内在阶级应该是静态的吗?
Com*_*are 40
这些内部类也会导致内存泄漏吗?
有可能.这取决于那些听众注册的内容.
例如,OnClickListener为a 编写的代码Button不应该导致内存泄漏,因为即使OnClickListener可能是内部类并且具有对它的隐式引用Activity,整个对象集也只是与活动相关联.因此,当活动被破坏时,活动Button,并且OnClickListener都可以作为一个整体被垃圾收集.
但是,LocationListener在LocationManager系统服务中注册的a 由该过程持有.因此,即使活动被破坏,听众也将保持注册状态.如果该侦听器是内部类,它将继续保持对该活动的隐式引用,并且您将发生内存泄漏.
那些内心阶级应该是Staic吗?
有可能.在大多数情况下,正确答案是"如果您正在注册除UI之外的其他侦听器,请务必在适当的位置注销它".在那种情况下,不会有泄漏.
任何人都可以给我任何示例代码,事件监听器如何可以防漏.
不是抽象的,没有.