我想克隆一个Parcel对象(非parcelable)。
我不能使用clone()方法,因为它是受保护的。我也不能使用反射来调用它,因为Parcel类没有实现'clonable‘
我试图执行issue:Create a copy of parcel object的解决方案,但它不适用于包裹类型本身-原因是'writeToParcel‘没有为包裹类型本身定义。因此,对于对象'Parcel a',a.writeToParcel(parcel,0)不会编译。
发布于 2015-01-06 09:43:24
使用Parcel.appendFrom()
这比编组和解组效率更高,并且不会丢失有关包中的对象引用或FileDescriptor的任何数据。
来源:无意中听到Android框架开发人员谈到这一点,并决定更新Stackoverflow问题。
发布于 2014-06-30 21:03:23
您可以通过编组/解组来完成此操作
byte[] rawData = original.marshall();
Parcel clone = Parcel.obtain();
clone.unmarshall(rawData, 0, rawData.length);
clone.setDataPosition(original.dataPosition());然而,它并不适用于所有的包裹。我认为它在具有活动对象的地块上失败,但我还没有测试以确保。
https://stackoverflow.com/questions/13629063
复制相似问题