我想克隆一个Parcel对象(不是parcelable)。
我不能使用clone()方法,因为它受到保护。我也不能使用反射调用它,因为Parcel类没有实现'clonable'
我尝试执行问题的解决方案: Create a copy of parcel object 但它不适用于Parcel类型本身 - 原因是没有为Parcel类型本身定义'writeToParcel'。因此,对于'Parcel a'对象,a.writeToParcel(parcel,0)将无法编译。
答案 0 :(得分:3)
使用Parcel.appendFrom()
这比编组和解组更有效,并且不会丢失有关对象引用或包中FileDescriptor
的任何数据。
来源:无意中听到Android框架开发人员谈论这个问题,并决定更新Stackoverflow问题。
答案 1 :(得分:-1)
您可以通过编组/解组
来完成byte[] rawData = original.marshall();
Parcel clone = Parcel.obtain();
clone.unmarshall(rawData, 0, rawData.length);
clone.setDataPosition(original.dataPosition());
但它并不适用于所有包裹。我认为它在包含活动对象的Parcel上失败了,但我还没有测试确定。