2013-11-04 120 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; 

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

相關問題