2013-11-04 39 views
3

我有一个对象,其具有以下类字段:传递一个复杂的对象通过的意图Android中

INT,INT,字符串,MyDatabaseType(自定义对象),列表< MyDatabaseDetail>(自定义对象的数组列表)

我可以通过一个意图/捆绑传递这个吗?

我已经玩了一些可序列化和parcelable,但我无法得到它的工作。我需要让所有的自定义对象类型的parcelable,而不是只是我要传递的主要原因之一,?

肯定有更好的办法?

+0

您的自定义对象应该实现要么Parcelable或序列化。有没有办法超越... –

+0

我看到:http://stackoverflow.com/a/13709806/2884981 - 我看到你可以做“readString()”,但对于像List (或任何自定义类型)我如何将它复制到构造函数中? – b85411

回答

2

当您以意图传递数据时,它必须是Parcelable。这是因为意图可能会传递给不同的应用程序,从而导致不同的VM。由于您的对象可能跨越了流程边界,因此需要一个可以保存/恢复的机制。这类似于经由web服务调用传递数据(在这种情况下,对象被“展平”,以类似XML或JSON)。

即使意图停留在您的应用程序中,即使Android选择杀死/重新启动您的应用程序,parcelability也可以让该对象继续存在,如果内存不足,可能会发生这种情况。

可以使用序列化来代替分段,但是分段更有效。

0

你可以让你Parcelable类,如果它包含不可序列化的变量。如果你的类中的所有变量是原始的或可序列化的或者你可以让他们序列化,这是很容易做到这一点。

您可以按照本指南:http://developer.android.com/reference/java/io/Serializable.html

在大多数情况下,你所要做的就是让你的类实现Serializable接口,并添加下面一行在你的类:

private static final long serialVersionUID = 0L; 

(读更多在上面的指南)。

相关问题