首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何克隆Parcel对象

如何克隆Parcel对象
EN

Stack Overflow用户
提问于 2012-11-29 23:26:43
回答 2查看 1.2K关注 0票数 2

我想克隆一个Parcel对象(非parcelable)。

我不能使用clone()方法,因为它是受保护的。我也不能使用反射来调用它,因为Parcel类没有实现'clonable‘

我试图执行issue:Create a copy of parcel object的解决方案,但它不适用于包裹类型本身-原因是'writeToParcel‘没有为包裹类型本身定义。因此,对于对象'Parcel a',a.writeToParcel(parcel,0)不会编译。

EN

回答 2

Stack Overflow用户

发布于 2015-01-06 09:43:24

使用Parcel.appendFrom()

这比编组和解组效率更高,并且不会丢失有关包中的对象引用或FileDescriptor的任何数据。

来源:无意中听到Android框架开发人员谈到这一点,并决定更新Stackoverflow问题。

票数 3
EN

Stack Overflow用户

发布于 2014-06-30 21:03:23

您可以通过编组/解组来完成此操作

代码语言:javascript
复制
byte[] rawData = original.marshall();
Parcel clone = Parcel.obtain();
clone.unmarshall(rawData, 0, rawData.length);
clone.setDataPosition(original.dataPosition());

然而,它并不适用于所有的包裹。我认为它在具有活动对象的地块上失败,但我还没有测试以确保。

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

https://stackoverflow.com/questions/13629063

复制
相关文章

相似问题

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