【发布时间】:2012-05-14 15:08:22
【问题描述】:
parcelable 数据是持久的吗?我在 android 生命周期函数中销毁了一些变量,例如 onDestroy() ,但是写入 parcelable 的东西呢?
最终我想通过意图传递我的可打包对象的元素,垃圾回收后它们是否仍然可用(java 或 dalvik 的)?
谢谢
【问题讨论】:
标签: android android-intent garbage-collection parcelable parcel
parcelable 数据是持久的吗?我在 android 生命周期函数中销毁了一些变量,例如 onDestroy() ,但是写入 parcelable 的东西呢?
最终我想通过意图传递我的可打包对象的元素,垃圾回收后它们是否仍然可用(java 或 dalvik 的)?
谢谢
【问题讨论】:
标签: android android-intent garbage-collection parcelable parcel
简短的回答是:是的。 Parcelable 数据是持久的。
当你用一个对象创建一个 Parcel 时,你基本上是在创建一个 at 对象的序列化版本。一旦你有了序列化的版本,对象本身就可以被垃圾收集,你仍然会有 Parcel(假设你已经保留了一个句柄,或者如果你已经通过 Intent 发送了它,那么操作系统就有了它的句柄) .
在另一个时候,您可以从 Parcel 中实例化一个新对象,最终您将得到原始对象的副本,无论原始对象是否已被垃圾回收。
【讨论】:
Bundle b = getIntent().getExtras(); ObjectA obj = b.getParcelable("com.package.ObjectA"); 但如果我没有呢?
Serializable 接口,这是一个类似的概念。