【问题标题】:Does passing an instance of a parcelable object via intent leak memory?是否通过意图泄漏内存传递可打包对象的实例?
【发布时间】:2013-05-27 14:52:33
【问题描述】:

我有许多实现Parcelable 接口的类,以便我可以在活动之间传递这些对象的实例。我试图了解这会/不会导致内存泄漏。

如果一个对象在一个活动中创建并通过Intent 传递给另一个,我猜这将传递对该对象的引用。根据我对垃圾收集器如何工作的(可能是错误的)理解,这将创建从接收活动到发送活动的引用,并造成内存泄漏,因为在该状态下无法对发送活动进行垃圾收集。

我错过了什么?

【问题讨论】:

  • android-developers.blogspot.in/2009/01/…。也许这会帮助你更好地理解
  • 我的猜测是 Intent 是在应用程序级别处理的,而不是在活动级别。所以当然,当你离开第一个活动时,它可以被垃圾收集。在应用程序中处理导航的不是活动本身,而是层次结构中更高的其他对象;那些是处理意图的。
  • @personne3000 我会考虑这种可能性。如果这就是意图的处理方式,那是有道理的。

标签: android memory-management android-intent parcelable


【解决方案1】:

如果一个对象在一个活动中创建并通过 Intent 传递给另一个,我猜这将传递对该对象的引用。

AFAIK,不,因为活动创建是通过核心操作系统进程进行的。我希望因此而制作一份副本,其副作用是没有您概述的 GC 问题。

【讨论】:

  • 为什么因为它们不是静态的?当您传递参考与副本时,也许我只是错过了。
  • @Rarw:您不能通过引用跨操作系统进程边界传递。
  • 啊,所以在活动之间它总是会传递一个副本
猜你喜欢
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
相关资源
最近更新 更多