Android : android bundle 是否应该用作 dto

Android : Should android bundle be used as a dto

使用 POJO 或 DTO 对来自 api 或数据源的数据建模是一种常见的做法。对于这些模型,您必须调整 serialization/de-serialization 逻辑或使用像 gson 这样的库来执行相同的操作。
我想知道我们是否可以在 android 中将 Bundle 用作 dto,因为它已经被用于在片段和活动之间传递数据。 Bundle 本质上是哈希映射的包装器,因此我们可以 put/get 其中的任何数据。

在您的 android 应用程序中使用 Bundle 作为 DTO 是一种好习惯吗?这种方法的advantages/disadvantages是什么?

Is it a good practice to use Bundles as the DTO in your android app?

不,不是。 Bundle 是一个 final class ,因此您可能无法扩展自己的分类法以针对您的问题域调整重用代码。

What are the advantages/disadvantages of this approach?

  • 优点:

    • 一个内置的 android 对象,它实现了 Parcelable 而不是常规的 Serializable(更快的序列化)。
  • 缺点:

    • 这是一个final class

    • 您无法控制或决定如何处理其中的任何数据。

    • 数据类型限制。

    • 抽象性差。

    • 不可扩展。

    • 仅用于活动或服务之间的通信。因此,如果您需要的话,您可能无法控制它的生命周期,也无法管理它的引用。

Bundle 本质上是 HashMap。此外,您不希望将大数据放在 Bundle 中,因为如果您将 Bundle 用作 Intent 数据,它会显着减慢打开 Activities 的速度。

HashMap 本身就是一种低级数据抽象。您可能希望围绕 HashMap 构建 DTO,但这是一个实现细节。