为什么使用捆绑包而不是标准对象?

问题描述 投票:0回答:1

在android中,为什么捆绑使用而不是类?当然这不是很有效率。我发现它也会使事情变得非常混乱,因为你必须使用类中的大量静态键,这些键通常不是很好的范围。也不是很直观。

我确信可以使用泛型,所以你不必盲目地转换返回的对象。

android performance android-intent bundle android-lifecycle
1个回答
3
投票

BundleParcelableParcelable对象旨在跨越进程边界。因此,您将看到Bundle和其他Parcelable对象在涉及进程间通信(IPC)时使用了很多,包括:

  • Intent额外的,因为我们每次开始活动,启动服务等时都使用IPC。
  • 保存的实例状态,因为该状态保存在核心OS进程中,以防我们自己的进程终止

任意对象不能跨进程边界传递。


此外,Bundle是一个框架类。所有应用程序以及核心操作系统都使用相同的定义。因此,Bundle可以从一个应用程序传递到另一个应用程序,并且两个应用程序都可以使用Bundle的内容(假设其内容本身是简单原语或基于其他共享类定义)。

即使您创建自己的类Parcelable,当其他应用程序尝试访问该对象时,您可能会遇到问题,因为它们没有您的类定义。


对于您自己的应用程序 - 特别是如果您使用单活动UI方法 - 您需要使用Bundle的唯一时间是保存的实例状态。如果您使用ViewModel或处理配置更改的类似方法,则无需在保存的实例状态Bundle中存储太多内容。

© www.soinside.com 2019 - 2024. All rights reserved.