通过网络发送捆绑包

时间:2013-10-06 18:53:30

标签: android android-networking

我正在尝试使用Bundle等通过网络从一台设备向另一台设备发送ObjectInputStreams。问题是Bundle 不可序列化。是否有一种简单的方法可以实现这一目标?我想使用Bundle,因为我可以发送各种类型(String,int,parcelables,list等)

1 个答案:

答案 0 :(得分:2)

您不应该序列化Bundle,因为它不保证版本兼容性。因此,如果您可以确保每个设备使用完全相同的版本,您应该没问题。但我真的不会推荐这个。每个api都声明不应该这样做!

  

Parcel不是通用序列化机制。这个班   (以及用于放置任意对象的相应Parcelable API   成为一个包裹)被设计为高性能的IPC运输。如   因此,将任何Parcel数据放入持久性数据库是不合适的   存储:任何数据的底层实现的更改   在包中可以使旧数据无法读取。

https://developer.android.com/reference/android/os/Parcel.html

但如果你真的想这样做,这是一种实现它的方法:

Bundle in = ...;
OutputStream os = ...

Parcel p = Parcel.obtain(); //create empty parcel object
in.writeToParcel(p, 0); //saving bundle as parcel
os.write(p.marshall()); //write parcel to stream