java – 了解Android应用程序中的内存泄漏
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 了解Android应用程序中的内存泄漏,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1691字,纯文字阅读大概需要3分钟。
内容图文
![java – 了解Android应用程序中的内存泄漏](/upload/InfoBanner/zyjiaocheng/970/547f99c636c34fee8ffa11bb5204381d.jpg)
我对Java编程很陌生,有很多C经验,而且我正在阅读有关引用如何导致Android应用程序内存泄漏的内容. This explanation让我难过.在“第2课”中它说:
The point is, the Activity doesn’t know that the lifespan of SomeObject will end when the instance of the Activity ends. If that object remains in memory, it will hold that Activity in memory as well […].
正如我所看到的那样(可能是错误的;请纠正我),当活动结束时,SomeObject被销毁(假设没有其他参考存在).该活动引用SomeObject,而不是相反.我不明白为什么在这里泄露任何东西,更不用说整个活动了.
解决方法:
这与他们为EventListener创建一个匿名类的事实有关.
public void onResume() {
super.onResume();
SomeObject object = new SomeObject();
object.setSuccessListener(new EventListener<Boolean>() {
public void onEvent(Boolean response) {
Log.d(TAG_NAME, "Valid response? "+response);
}
});
SomeObjectManager.getSingleton().addObject(object);
}
>明确指出,这是在活动中完成的
的onResume().
>匿名类(以及非静态内部类)具有对其周围类的隐式引用.所以在这种情况下,EventListener引用了Activity本身.
>因此,SomeObject具有对Activity的引用,因为它引用了实现EventListener的Anonymous类.
这是您在问题中引用的引用之前的文本:
For instance, in the example above: we’ve attached a reference to our
Activity instance to some object, presumably persistent, and in a
manager somewhere. The point is…
因此SomeObjectManager类在活动被销毁时不会消失,它保存对SomeObject的引用,SomeObject保存对EventListener的引用,EventListener又引用Activity.
所以当你说:
As I see it (probably wrong; please correct me), when the activity
ends, SomeObject is destroyed (assuming no other reference to it
exists). The activity references SomeObject, not the other way round.
该逻辑中的缺陷是SomeObject通过EventListener引用该活动.
这有帮助吗?
内容总结
以上是互联网集市为您收集整理的java – 了解Android应用程序中的内存泄漏全部内容,希望文章能够帮你解决java – 了解Android应用程序中的内存泄漏所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。