为什么Android使用parcel在组件之间传递数据?
Parcel
是消息(数据和对象引用)的容器。在传输中,Parcel
包含一个选定的Java Object
的字节流版本,其中包含有关其属性的信息。这些数据在发送组件处写入Parcel
,并在接收组件处读取。由于该协议也被设计为支持IPC(进程间通信),因此只有参考不足。如果你真的只想使用一个引用,你可以声明你的对象包含数据public static
,虽然我不会推荐这个,因为全球范围内的组件紧密耦合。
'因为协议也被设计为支持IPC(进程间通信),所以只有引用不足以满足要求。“是的,这就是为什么活动可以属于到一个不同于你自己的应用程序。 – EpicPandaForce
如果我们看看common ways of sharing data between activities,我们可以合理地猜测为什么会出现这种情况。
替代方案包括使用单例和SharedPreferences
- 基本上充当数据存储状态的“所有者”的实体。与简单地相互提供引用的活动相比,使用第三方保持活动分离。
我们希望活动脱钩,因为任何两个activities应该是相当不同的实体,可能有独立的生命周期。这就是为什么如果我们可以简单地通过价值传递信息(而不是保留活的引用依赖),我们应该。这也是为什么它可以与进程间通信相媲美,这种通信在缺乏共享内存的情况下工作。
实际上,它是活动之间的“捆绑”,但足够接近 –