3

パーセルとシリアライズ可能は、同じコンテキストで一種の交換可能に、または少なくとも直感的ではなく使用されているように見えます。私のためにいくつかのことを明確にしていただけますか?

  1. パーセルの永続ストレージ(ディスク上)またはメモリのみに保存されます

  2. 区画データをディスクに保存するためにシリアライズ可能にする必要がありますか

洞察に感謝します、そしていいえ、アンドロイド開発マニュアルはこれを私に明白にしません

4

2 に答える 2

4

私の答え:

  1. パーセルはオブジェクトをフラット化するためのものであるため、JVMの実行中のメモリ以外の場所に格納できます。

  2. データをディスクに保存するために、シリアル化可能とパーセルを混在させる必要はありません。オブジェクトをディスクに保存するには、どちらか一方だけで十分です。


SerializableとParcelableは、どちらもJavaオブジェクトをフラット化する方法です。

これらのフラット化されたオブジェクトは、さまざまな伝送形式(ディスクファイルが含まれる)を介してプロセス間で受け渡すことができます。

シリアライズ可能はコアJavaに由来し、使いやすいです。

ParcelableはAndroidに由来し、もう少し複雑です。

この回答には詳細が含まれています。

https://stackoverflow.com/a/5551155/523135

このブログ投稿には、サンプルコードParcelableがあります。

http://blog.cluepusher.dk/2009/10/28/writing-parcelable-classes-for-android/

このブログ投稿には、シリアル化可能なコードのサンプルがあります。

http://www.javapractices.com/topic/TopicAction.do?Id=45

于 2012-05-03T18:07:32.237 に答える
2

パーセルのドキュメントをお読みください。荷物は永続的なストレージに配置しないでください。

抜粋:

「...Parcelは汎用のシリアル化メカニズムではありません。このクラス(および任意のオブジェクトをParcelに配置するための対応するParcelable API)は、高性能IPCトランスポートとして設計されています...」

「...パーセルデータを永続ストレージに配置することは適切ではありません。パーセル内のデータの基盤となる実装を変更すると、古いデータが読み取れなくなる可能性があります。」

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

于 2015-09-10T07:27:58.137 に答える