首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带WeakReference到外部类的静态内部类如何避免Android内存泄漏?需要一个例子

带WeakReference到外部类的静态内部类如何避免Android内存泄漏?需要一个例子
EN

Stack Overflow用户
提问于 2011-12-23 02:42:10
回答 1查看 3.3K关注 0票数 5

我在研究这篇文章,避免内存泄漏。有几个避免内存泄漏的建议,其中一个建议如下:

如果您不控制活动的生命周期,请避免活动中的非静态内部类,使用静态内部类,并对活动内部的活动进行弱引用。此问题的解决方案是对外部类使用带有WeakReference的静态内部类,例如在ViewRoot及其W内部类中所做的操作

有人能通过举个例子来说明这一点吗?

2-如何使用静态内部类与弱引用内部类?

3-在应用程序中使用静态类以避免内存泄漏的最佳实践是什么。

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2012-10-26 19:22:46

在这篇文章中,有一个答案展示了一个简单的示例,说明您正在寻找什么:如何在片段中实例化接口?

但是,一个问题是,有时片段的寿命比它的活动长,例如,如果活动有配置更改(例如,旋转),那么活动就会被破坏,但是碎片可以保持存活,然后重新连接到新的(旋转的)活动。见本文:Android片段生命周期过定向更改

因此,您可能对使用WeakReference的建议解决方案有问题,因为在旋转之后,您将有一个对旧活动的引用(或者什么也没有)。

似乎对我有用的东西:

1)当需要引用活动时,调用getActivity()。例如,可以在成员onPostExecute类的onPostExecute()中正确地执行此操作。

2)检查结果是否为null (这可能发生:碎片的生存期可能比它们的活动长)

3)检查活动isFinishing() --您不希望在这种状态下执行某些UI操作。

4)将活动转换为您的接口类型。

5)调用接口类型的回调。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8611733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档