2017-04-12 373 views
1

我想知道什麼是在這兩種方法之間的活動之間旅行物體的最佳表現和更簡單的方法。我知道Parcelable是專門爲Android設計的,但是如何使用Gson解析一個複雜的對象或其中的一個數組,並將其設置爲一個額外的字符串,在第二個活動中檢索它並將其解析爲對象。在我的例子中,我有一個內容列表,每個內容都有一個主題列表。使用parcelable,旅行JSON是比旅行對象更好還是更差的方式? 我排除像保存在磁盤上或使用可序列化的選項。Android - 使用Parcelable或Json在活動之間傳遞複雜對象?

+0

恕我直言,這兩種應該被合併成一個單一的活動,或者你應該實施一些進程級高速緩存,這兩個活動都可以訪問。 – CommonsWare

+0

都不是。 Parcelables和JSON都涉及很多開銷 - 絕對單位不是很多,但很多*,而不是簡單地分配給變量。只有當您真的想要序列化某些內容或因其他原因而需要使用它們時(例如,您必須遵守Intent/Bundle/AIDL合同或從REST API接收數據時)纔可以使用它們。與Parcelable JSON不同,它存儲了參數的名稱,因此它更具人類可讀性,但由於它的原因,會佔用更多的內存。 – user1643723

+0

至於相對性能(如「CPU時間,浪費(de)序列化」),兩者之間應該沒有差別。許多不受歡迎的JSON處理庫(khm-G-kham-SON)使用Reflection,所以它們的速度很糟糕。但是,編寫良好的JSON解串器(如LoganSquare)在序列化速度方面與Parcelable完全相同。 – user1643723

回答

0

選項1.將數據存儲在集中式對象(單例等)中&然後在Activity中訪問該對象。

假設你有一個單例類AppData。將數據存儲在AppData中。直接在您的活動中使用AppData訪問數據。

選項2.在相應的類中實現Parcelable,然後通過意向將可分段的對象傳遞給活動或優先存儲可分配的數據。 How to make entity parcelable with just copy paste

選項3在相應的類實現Serializable