gpt4 book ai didi

android - 事件监听器中的内存泄漏

转载 作者:IT老高 更新时间:2023-10-28 22:02:48 25 4
gpt4 key购买 nike

我已经浏览了文章http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html .在本文中,建议使用带有 WeakReference 的静态内部类。许多内部类用于事件监听器。那些内部类也会导致内存泄漏吗?那些内部类应该是静态的吗?

最佳答案

Can those inner class also cause memory leakage?

可能。这取决于这些监听器的注册对象。

例如,为 Button 编写良好的 OnClickListener 不应导致内存泄漏,因为即使 OnClickListener 可能一个内部类并且对 Activity 有一个隐式引用,整个对象集都只是与 Activity 相关联。因此,当 Activity 被销毁时,Activity、ButtonOnClickListener 都可以作为一个整体进行垃圾回收。

但是,向 LocationManager 系统服务注册的 LocationListener 由进程持有。因此,即使 Activity 被销毁,监听器仍将保持注册状态。如果该监听器是一个内部类,它将继续持有对 Activity 的隐式引用,并且您将发生内存泄漏。

Should those inner class be Staic one?

可能。在大多数情况下,正确的答案是“如果您在 UI 之外注册监听器,请务必在适当的时候取消注册”。在这种情况下,不会有泄漏。

Can any one give me any example code how the event listener can use leak-proofly.

不是抽象的,不。

关于android - 事件监听器中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5002589/

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