假设您要启动一个新活动并将当前活动的一些数据传递给它。如果数据是原始类型,您可以简单地使用意图并添加额外内容,但是对于更复杂的数据结构,如数组列表或对象,您将如何做到这一点?
问问题
20582 次
2 回答
60
你有几个选择:
- 您可以将更复杂的结构包装在实现
Parcelable
接口的类中,该类可以存储在额外的 - 您可以将更复杂的结构包装在实现
Serializable
接口的类中,该类可以存储在额外的 - 您使用静态数据成员来传递东西,因为它们都在同一个进程中
- 您使用外部存储(文件、数据库、
SharedPreferences
) - 正如刚刚发布的人所指出的,使用通用组件,例如自定义
Application
或本地Service
你不想做的是通过额外的东西传递大东西。例如,如果您正在创建一个从相机中抓取图片的应用程序,您不希望将它们传递给额外的 - 使用静态数据成员(听起来很恶心)。Intents 被设计为跨进程工作,这意味着有一定数量的数据复制正在进行,当大型数据不需要时,您希望避免这种情况。
于 2009-09-17T23:48:32.170 回答
2
我知道的一种选择是将您正在使用的数据存储在 Application 对象中,您的所有活动都可以从上下文中检索该对象。
我也听说过使用Google Protocol Buffer来实现更高性能的解决方案
于 2009-09-17T23:46:08.527 回答