在android中的活动之间传递非原始types的数据

假设你想开始一个新的活动,并从当前活动传递一些数据。 如果数据是原始types的,你可以简单地使用intent并添加额外的内容,但是如何处理更复杂的数据结构(如数组列表或对象)呢?

你有几个select:

  1. 您可以将更复杂的结构包装在实现Parcelable接口的类中,该接口可以存储在一个额外的类中
  2. 你可以把更复杂的结构包装在一个实现Serializable接口的类中,这个接口可以存储在一个额外的类中
  3. 你使用静态数据成员来传递东西,因为它们都在同一个进程中
  4. 您使用外部存储(文件,数据库, SharedPreferences
  5. 正如刚刚发布的人员所述,请使用通用组件,例如自定义Application或本地Service

你不想做的事是通过额外的东西传递大的东西。 例如,如果你正在创build一个从照相机中抓取图片的应用程序,你不需要额外的传递这些图片 – 使用一个静态数据成员(听起来就像是icky)。 意图的目的是为了跨进程,这意味着有一定数量的数据复制继续进行,当你不需要大的东西的时候你想避免这种复制。

我知道的一个选项是将您正在使用的数据存储在Application对象中,您可以从上下文中检索所有活动。

我也听说过使用Google Protocol Buffer来实现更高性能的解决scheme