2016-04-23 170 views
6

我知道我的問題有一些答案,但答案不是非常詳細或切實。 在我的程序中,爲了將數據從一個活動傳輸到其他我將POJO類的內容轉換爲普通字符串並傳遞(METHOD1)。Android意圖傳遞可parcelable對象vs傳遞Json字符串

方法一

String jsonString = JacksonSingleton.getObjectMapper().writeValueAsString(object); 
bundle.putExtra(JSON_STRING_KEY, jsonString) 

方法2

bundle.putExtra(JSON_STRING_KEY, parcelableObject); 

我的問題是這兩個方法僅在性能方面,優選我始終認爲,製作類別可以parcelable或serializable是低效的。在方法1中,我不需要對POJO類進行任何更改。

+0

夥計們,請不要downvote甚至沒有評論或回答它的問題.... – oathkeeper

+0

看看這裏,http://www.stevenmarkford.com/passing-objects-between-android-activities/和在這裏,https://bitbucket.org/afrishman/androidserializationtest。做出明智的選擇。 –

+0

我不想比較可序列化和parcelable。我只是想檢查傳遞一個普通字符串和一個parcelable對象之間的性能差異。 – oathkeeper

回答

9

儘管我討厭回答我自己的問題,但我想我會討論並分享我的觀察結果,這些觀察結果將在未來幫助他人。

將數據從一個活動傳輸到另一個活動可以通過在活動意圖中傳遞Serializable或Parcelable對象來完成。 Android開發者網站推薦使用Parcelable接口來實現此目的(link)。

但是,我的問題是有關傳遞Parcelable對象和JSON字符串之間的效率比較。

爲了測試這個,我使用了一箇舊的和低端的Android設備。我通過在活動意圖中發送大型可發佈對象來啓動一項活動。接下來,我使用活動意圖中相同對象的JSON字符串啓動了相同的活動。我觀察到的是通過發送JSON字符串而不是Parcelable Object來啓動活動時可觀察到的顯着延遲。

總之,即使我們傳遞JSON字符串,String對象也會實現Serializable。 Google建議使用Parcelable而不是Serializable對象。如果長度可以忽略不計,這通常是微不足道的。但是,如果是大量Json Strings的大量物體,效率肯定會受到影響。您可以參考performance benchmark of Parcelable vs Serializable

相關問題