24

假设您要启动一个新活动并将当前活动的一些数据传递给它。如果数据是原始类型,您可以简单地使用意图并添加额外内容,但是对于更复杂的数据结构,如数组列表或对象,您将如何做到这一点?

4

2 回答 2

60

你有几个选择:

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

你不想做的是通过额外的东西传递大东西。例如,如果您正在创建一个从相机中抓取图片的应用程序,您不希望将它们传递给额外的 - 使用静态数据成员(听起来很恶心)。Intents 被设计为跨进程工作,这意味着有一定数量的数据复制正在进行,当大型数据不需要时,您希望避免这种情况。

于 2009-09-17T23:48:32.170 回答
2

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

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

于 2009-09-17T23:46:08.527 回答