我正在尝试Bundle
通过网络将一个设备从一个设备发送到另一个使用ObjectInputStreams
等。问题是Bundle
不可序列化。有没有一种简单的方法可以做到这一点?我想使用Bundle
,因为我可以发送各种类型(字符串、整数、parcelables、列表等)
问问题
259 次
1 回答
2
您不应该序列化 Bundle,因为它不保证版本兼容性。因此,如果您可以确保每台设备都使用完全相同的版本,那么您应该没问题。但我真的不推荐这个。每个 api 都声明不应该这样做!
Parcel 不是通用的序列化机制。此类(以及用于将任意对象放入 Parcel 的相应 Parcelable API)被设计为高性能 IPC 传输。因此,将任何 Parcel 数据放入持久存储是不合适的: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
于 2016-06-19T19:05:27.913 回答