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

时间:2009-09-17 23:33:23

标签: android data-structures android-activity

假设您要启动一个新活动并从当前活动传递一些数据。如果数据是基本类型,您可以简单地使用intent并添加额外内容,但是如何为更复杂的数据结构(如arraylists或对象)执行此操作?

2 个答案:

答案 0 :(得分:57)

您有几个选择:

  1. 您可以将更复杂的结构包装在实现Parcelable接口的类中,该类可以存储在额外的
  2. 您可以将更复杂的结构包装在实现Serializable接口的类中,该类可以存储在额外的
  3. 您使用静态数据成员传递内容,因为它们都在同一个进程中
  4. 您使用外部存储(文件,数据库,SharedPreferences
  5. 作为刚发布的人注意到,请使用常用组件,例如自定义Application或本地Service
  6. 你不想做的是通过额外的东西传递大量的东西。例如,如果您正在创建一个从相机中抓取图片的应用程序,您不希望传递其他内容 - 使用静态数据成员(听起来很icky)。意图被设计为跨进程工作,这意味着有一些数据复制正在进行,当你不需要大量的东西时你想要避免这些数据。

答案 1 :(得分:2)

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

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