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

有帮助吗?

解决方案

您有几个选择:

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

其他提示

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

我也听说过使用 Google协议缓冲区来实现更高性能的解决方案

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top