我正在尝试使用Bundle等通过网络从一个设备向另一个设备发送ObjectInputStreams。问题是Bundle不可序列化。有没有简单的方法可以做到这一点?我想使用Bundle,因为我可以发送各种类型的信息(字符串,整数,可包裹性,列表等)

最佳答案

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


  包裹不是通用的序列化机制。这个班
  (以及用于放置任意对象的相应的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

10-08 19:01