2013-05-27 27 views
2

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

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

我错过了什么?

+0

http://android-developers.blogspot.in/2009/01/avoiding-memory-leaks.html。可能是这会帮助你更好地理解 – Raghunandan

+0

我的猜测是Intent是在应用程序级别处理的,而不是活动级别。所以当然,当你离开第一个活动时,它可以被垃圾收集。处理应用程序中导航的活动本身并不是这些活动本身,而是其他层次较高的对象;那些是处理意图的人。 – personne3000

+0

@ personne3000我会考虑这种可能性。如果这意味着如何处理,这是有道理的。 – Rarw

回答

1

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

AFAIK,不,因为活动创建是通过核心操作系统进程进行的。我期望得到一份副本作为这个结果,副作用是没有你列出的GC问题。

+0

为什么因为它们不是静态的?也许我只是错过了当你通过一个引用与副本。 – Rarw

+0

@Rarw:你不能通过操作系统进程边界参照。 – CommonsWare

+0

啊,所以活动之间总是会通过一份副本 – Rarw

相关问题