Bundle
などを使用して、あるデバイスから別のデバイスにネットワーク経由で送信しようとしていますObjectInputStreams
。問題は、シリアライズできないBundle
ことです。これを実現する簡単な方法はありますか?あらゆる種類の型 (String、int、parcelables、リストなど) を送信できるので使用したいBundle
質問する
259 次
1 に答える
2
バージョンの互換性が保証されないため、バンドルをシリアル化しないでください。したがって、すべてのデバイスがまったく同じバージョンを使用していることを確認できれば、問題ありません。しかし、私は本当にこれをお勧めしません. すべてのAPIは、これを行うべきではないと述べています!
Parcel は、汎用のシリアル化メカニズムではありません。このクラス (および任意のオブジェクトをパーセルに配置するための対応する Parcelable API) は、高性能 IPC トランスポートとして設計されています。そのため、パーセル データを永続ストレージに配置することは適切ではありません。パーセル内のデータの基になる実装を変更すると、古いデータが読み取れなくなる可能性があります。
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 に答える