1

Androidのドキュメントから:

注: Parcelable を見て、Android が組み込みの Java シリアライゼーション メカニズムを使用していないのはなぜですか? Android チームは、Java でのシリアル化は Android のプロセス間通信の要件を満たすには遅すぎるという結論に達したことが判明しました。そこで、チームは Parcelable ソリューションを構築しました。Parcelable アプローチでは、クラスのメンバーを明示的にシリアル化する必要がありますが、最終的には、オブジェクトのシリアル化がはるかに高速になります。

したがって、実際には Parcelable が Serializable よりも優れていることはわかっていますが、一方で、

また、Android には、別のプロセスにデータを渡すための 2 つのメカニズムが用意されていることにも注意してください。1 つ目は、インテントを使用してバンドルをアクティビティに渡すことであり、2 つ目は、Parcelable をサービスに渡すことです。これら 2 つのメカニズムは互換性がないため、混同しないでください。つまり、Parcelable はアクティビティに渡されることを意図していません。アクティビティを開始してデータを渡したい場合は、バンドルを使用します。Parcelable は、AIDL 定義の一部としてのみ使用することを意図しています

わかりました、しかし、カスタム オブジェクト リストをアクティビティに渡す必要があります!そのため、バンドルには、Parcelable または Serializable のいずれかを配置する必要があります!

今のところ、私はこのようにしました:

public class MyObject implements Serializable{

そして渡す:

 Bundle b = new Bundle();
 b.putSerializable("objList", anArrayListWithMyObjectElements);
 intent.putExtra("objList", b);

ArrayList も Serializable を実装しているため、正常に動作します...しかし、この方法でバンドルを使用する意味がわかりません...しかし、android は、アクティビティ通信に Parcelable を使用しないように指示します...正解は何ですか??

4

1 に答える 1

3

私の経験でParcelableは、IPCであるかどうかにかかわらず、可能な場合は使用することを強くお勧めします。これはAndroidのJavaの事実上の代替品でSerializableあり、より最適化されています。

オブジェクトを分割する方法についてサポートが必要な場合は、お知らせください。

于 2012-09-28T10:51:46.817 に答える