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

asp*_*ame 23 android data-structures android-activity

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

Com*_*are 57

你有几个选择:

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

你不想做的是通过额外的东西传递大量的东西.例如,如果您正在创建一个从相机中抓取图片的应用程序,您不希望传递其他内容 - 使用静态数据成员(听起来很icky).意图被设计为跨进程工作,这意味着有一些数据复制正在进行,当你不需要大量的东西时,你想要避免这些数据.

  • 我恨他们.它们是维护噩梦,非常容易出错.简单地将对象作为Serializable传递的唯一优势是更好的性能. (5认同)