在android中的活动之间传递非原始类型的数据
-
10-07-2019 - |
题
假设您要启动一个新活动并从当前活动传递一些数据。如果数据是基本类型,您可以简单地使用intent并添加额外内容,但是如何为更复杂的数据结构(如arraylists或对象)执行此操作?
解决方案
您有几个选择:
- 您可以将更复杂的结构包装在实现
Parcelable
接口的类中,该类可以存储在额外的 中
- 您可以将更复杂的结构包装在实现
Serializable
接口的类中,该类可以存储在额外的 中
- 您使用静态数据成员传递内容,因为它们都在同一个进程中
- 您使用外部存储(文件,数据库,
SharedPreferences
) - 作为刚发布的人注意到,请使用常用组件,例如自定义
Application
或本地Service
醇>
你不想做的是通过额外的东西传递大量的东西。例如,如果您正在创建一个从相机中抓取图片的应用程序,您不希望传递其他内容 - 使用静态数据成员(听起来很icky)。意图被设计为跨进程工作,这意味着有一些数据复制正在进行,当你不需要大量的东西时你想要避免这些数据。
其他提示
我所知道的一个选项是将您正在使用的数据存储在Application对象中,您可以从上下文中检索所有活动。
我也听说过使用 Google协议缓冲区来实现更高性能的解决方案
不隶属于 StackOverflow