有没有其他方法通过Intents传递复杂对象?

时间:2013-12-11 18:58:23

标签: java android android-intent parcelable

所以我有非常复杂的数据类型需要通过Intent发送。 所有这些类型都作为基类(BaseResponse)的一部分,它有很多子类,这些子类还包括不同的复杂数据类型的负载。 我很乐意,如果有一种方法,所以我只需要实现Parcelable,例如子类,但似乎所有实现Parcelable的类的成员都需要Parcelable?

如果答案不是“不,不要懒惰”,那么今天你赢得了一些我的互联网。

PS。这些类型都是从WSDL自动生成的,所以我希望我不必手动编辑它们。 DS。

快速编辑:我知道Serializable接口,但它会带来同样的问题。

第二次编辑:我注意到你可以通过Intent传递Arrays of Objects,我不确定这是否会将它序列化为一个Object(也就是没有成员),或者我是否可以在收到时将其转换回来数组。 我试试看并报告回来

第3次编辑:Intent中的整个放置对象数组不会工作我猜并且懒惰我会使用JSON序列化选项并将其标记为答案(即使我没有尝试过但是猜测它应该可以工作如果互联网上的一个陌生人说如此)

最终编辑:我现在使用标记为正确答案的Json序列化方式,它工作得很好。 Gson可以序列化的对象有一些限制,但没有任何关注我的东西。这样做可能是一种非常有效的方式(就cpu而言),但是它让我免于必须明确地为~300个类实现接口的时间是值得的。 谢谢大家的快速答案和建议,StackOverFlow毫无疑问是人类历史上最好的社区。

3 个答案:

答案 0 :(得分:1)

我认为没有其他选择,否则您可以使用数据库填充数据(如果可能),然后传递其密钥(表的主键)或其他东西来实现它。如果你已经考虑过它,不要杀了我! :o

答案 1 :(得分:1)

我使用GSON库首先将我的对象转换为字符串(JSON字符串),然后将其添加到intent中。

在接收时将其转换回原始对象。

对我来说很好,但不知道这是否是一种有效的方式。

答案 2 :(得分:1)

所有类实现Parcelable(不确定为什么这对您来说是一个惊喜:)是在Android上执行此操作的正确方法。