2

Android ではsSerializable内でオブジェクトを渡すことができますがIntent、パフォーマンス上の理由から推奨されないことを理解しています。

ただし、を使用LocalBroadcastManagerしている場合、インテントに渡されたときにオブジェクトがシリアル化またはパーセル化されることはありますか? LBM はプロセス間ではないため、シリアライゼーション (またはパーセリング) を呼び出す理由はありません。

4

2 に答える 2

2

おっしゃるとおり、 を使用するときにシリアライゼーションやパーセリングを呼び出す理由はないはずですが、そのクラスは、システムを介してブロードキャストを送信しても意味がない場合にLocalBroadcastManager、通常の代わりとして設計されました。BroadcastManager開発者が手間をかけずに通常のブロードキャストをローカルのブロードキャストに置き換えることができるようにするためのアイデアだったと思います。

新しいプロジェクトに取り組んでいて、この種の機能が必要な場合は、OttoEventBusなどのバス ライブラリを使用することをお勧めします。これにより、同じ問題がより適切でエレガントな方法で解決されます (IMHO)。

于 2013-02-04T22:18:20.653 に答える
0

LocalBroadcastManager のソースコードをざっと見てみると、Intents の Serializable/Parcelable オブジェクトがシリアライズまたはパーセル化されていないことがわかります。

https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v4/java/android/support/v4/content/LocalBroadcastManager.java

于 2013-02-04T22:21:27.790 に答える