Java(Android)のクラスでSerializableの実装を使用してしばらくして、私はParcelableを発見しましたが、どちらかを選択するタイミングを見つけることができませんでした。 また、それらのパフォーマンスの違いは何ですか?Parcelable Vsを実装する時期と方法シリアライズ可能?
答えて
どのようなパフォーマンスの違いがありますか?
Parcelable
あなたはParcelable
使用場所のためSerializable
であるよりもsignficantly速いです:Intent
エキストラを、インスタンス状態Bundle
を保存したが、その他
言われていること、あなたはこのようなものをたくさんやっていないと仮定して、特にタイトなループでは、ユーザーはその違いに実際に気付くことはまずありません。
ときは、Androidの開発を行っている場合、1または別の
を選択Parcelable
はオプションですSerializable
にParcelable
を好みます。ほとんどの場合、データの永続性にはSerializable
を使用しますが、他のシリアル化オプション(Gson経由のJSONなど)を推奨します。
JavaオブジェクトがAndroidと他のJava環境の両方から使用される別個のライブラリにある場合、1つの主な例外があります。これらの環境にはParcelable
は含まれませんが、Serializable
は両方の場所で動作します。
Parcelableは、Androidコンポーネント間でデータをやりとりするのに役立ちます。バインダーは、送信されるべきパーセルをマーシャリングし、それを送受信し、それを反対側でアンマーシャリングして元のパーセルのコピーを再構成する。
w.r.t Serializableは、クラスとその子にSerializableインターフェイスを実装するだけです。それは実装するメソッドがないことを意味するマーカーインターフェイスです。Javaは単に効率的にシリアル化するための最善の努力をします。Reflectionは多くの一時オブジェクトを作成し、ガベージコレクションをかなり引き起こしがちです。
Googleのエンジニアパーセルは、Serializableよりも10倍以上高速です。 Parcelableでは、開発者はマーシャリングとアンマーシャリング用のカスタムコードを記述するので、シリアライゼーションと比較してガベージオブジェクトが少なくなります。あなたは、実装を理解するために、ここでのサンプルコードを確認することができ
はAndroid: Difference between Parcelable and Serializable?
要注意をdifference-?
- はに細心の注意を払って、あなたが書くとAndroidは小包が盲目で、完全オーダー が正しい取得するためにあなたを信頼 を読み取るために使用するParcel.The機構にしてからご 値を読み取るとするためです、そうしないと、実行時クラッシュが発生します。
- Parcelにブール値を簡単に書き込む方法はありません。 これを行うには、代わりに out.writeByte((byte) (myBoolean?1:0))で対応する値を持つバイトを書き込みます。同様に、myBoolean = in.readByte()を使用して検索します。= 0;
以下のプロジェクトをチェックして、Parcelableを手動で作成しないようにしてください。
Parcelableは、Androidのためのより良いです: 1.それはParcellableは、このリンクをチェックすることが
- 1. シリアライズ可能と同期
- 2. Java:シリアライズ可能なクラスを実装するクラス
- 3. クリック可能なLabelFieldの実装方法。
- 4. amazon cognitoを使用してパスワード有効期限とパスワードアーカイブ可能な機能を実装する方法
- 5. Parcelableを実装している間にArrayListを並べ替える方法
- 6. フローティングでドラッグ可能なパネルを実装する方法
- 7. appceleratorで展開可能なリスト行を実装する方法
- 8. Mediaelement Playerでクリック可能なオーディオチャプターリンクを実装する方法は?
- 9. 再利用可能なHTMLナビゲーションメニューを実装する方法は?
- 10. シリアライズ可能クラスコレクション
- 11. 長期的な統計と短時間ログを実装する方法は?
- 12. 可能System.String実装
- 13. 汎用型をシリアライズ可能にする方法は?
- 14. プラグイン可能なjarとしてJavaプロジェクトを実装する方法
- 15. シリアライズ可能でない要素を持つスカラーケースクラスをシリアル化する最善の方法は何ですか?
- 16. gitサーバを実装する可能性
- 17. ISRとmain()の同期を実装する方法は?
- 18. アンドロイドで 'キャリブレート可能な'方向リスナを実装する方法は?
- 19. シリアライズ可能なドメインモデルを生成する
- 20. Jackson ObjectMapperをシリアライズ可能にする
- 21. JPAセッションと同時にGetOrCreateを実装する方法は?
- 22. ポリモリックで拡張可能なシリアル化メソッドの実装方法
- 23. Java generics - Tをシリアライズ可能にすることは可能ですか?
- 24. PHPで高性能な非同期ソケットサーバーアプリケーションを実装する方法は?
- 25. シリアル化と競合のシリアライズが可能
- 26. linqpadとカスタムIPrincipalのシリアライズ可能
- 27. シリアライズ可能なクラスと名前のリファクタリング
- 28. すべてのアクティビティで利用可能なログインアクティビティを実装する方法。 android
- 29. c#app:JSONインターフェイスを実装することは可能ですか?
- 30. Fragmentactivityにオーバーフローメニューを実装することも可能ですか
(直列化はリフレクションを使用しています)リフレクションを使用していません 2.高速です。 : - http://stackoverflow.com/a/7181792/2362301 Seriallizable checkoutについては、次のリンクを参照してください。 - http://www.coderzheaven.com/2012/07/25/serialization-android-simple-example/ – AmmY
DidあなたもGoogle * ['Parcelable Vs。 Serializable'](https://www.google.com/search?q=Parcelable+Vs.+Serializable)? – Andreas