android - 通过 LocalBroadcastManager 传输的 parcelable 是不可变的吗?

标签 android serialization immutability broadcast parcelable

如果我通过 LocalBroadcastManager 将 Parcelable 对象发送到程序的另一部分 - 那么 Parcelable 是不可变的吗?在接收到的 Parcelable 不能影响最初传输的对象的意义上是不可变的。我猜是这样,因为我猜 Parcelable 是一种“深度复制”序列化机制,而不是通过引用传递,但我需要确定。知道的人可以告诉我是否必须担心接收端的某个人更改接收到的对象的值,如果我想防止它影响原始对象...?

最佳答案

If I send a Parcelable object to another part of my program via LocalBroadcastManager -is the Parcelable immutable then?

这不能保证。事实上,据我所知,本地广播根本不会发生这种情况。

I guess Parcelable is a "deepcopy" serialization mechanism and not pass by reference

仅跨进程边界。这恰好包括诸如 startActivity() 之类的东西,用于您的另一个 Activity ,因为它们涉及 IPC。但是 Intent 对象——及其附加功能——只是通过 LocalBroadcastManager 在您的进程中传递。我看不到 Intent 会被迫复制的地方。

关于android - 通过 LocalBroadcastManager 传输的 parcelable 是不可变的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22562051/

相关文章:

android - 倾斜滚动文本?

java - 为什么Java的基于值的类不应该被序列化?

.net - ASP.NET MVC Posted Model 丢失接口(interface)属性值并且 ModelState 有错误。模型绑定(bind)限制?序列化问题?

ios - 如果常量是不可变的,为什么我可以使用 let 重新分配它们?

android - 将 ArrayList<pojo> 保存在 SharedPreferences 中

android - 如何为 create-react-native-app 生成 apk 文件(使用 EXPO.IO 组件)

scala - Spark : Dataset Serialization

c# - 为什么使用只读IEnumerable <T>

c# - 如果委托(delegate)是不可变的,为什么我可以做 x += y 这样的事情?

android - 从 WebView 播放 youtube 视频