2016-04-23 4 views
6

Ich bin mir bewusst, dass es einige Antworten auf meine Frage, aber die Antworten sind nicht sehr aufwändig oder überzeugend. In meinem Programm, um Daten von einer Aktivität zu anderen zu übertragen, konvertiere ich den Inhalt der POJO-Klasse in eine normale Zeichenfolge und Übergabe (METHOD1).Android Intent übergeben parcelable Objekt vs übergeben Json Zeichenfolge

Method1

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

Method2

bundle.putExtra(JSON_STRING_KEY, parcelableObject); 

Meine Frage ist, welche dieser beiden Methoden sind bevorzugt nur in Bezug auf die Leistung? Ich habe immer geglaubt, dass eine Klasse Parcelable oder Serializable ineffizient ist. In METHOD 1 muss ich meine POJO-Klasse nicht ändern.

+0

Jungs, bitte nicht die Frage ablehnen, ohne auch nur zu kommentieren oder zu kommentieren .... – oathkeeper

+0

Schauen Sie hier, http://www.stevenmarkford.com/passing-objects-between-android-activities/ und hier, https://bitbucket.org/afrishman/androidserializationtest. Wähle weise. –

+0

Ich versuche nicht, zwischen serialisierbar und parcelable zu vergleichen. Ich versuche nur den Leistungsunterschied zwischen der Übergabe einer normalen Zeichenfolge und eines parzellierbaren Objekts zu überprüfen. – oathkeeper

Antwort

9

So sehr ich es hasse, meine eigenen Fragen zu beantworten, ich dachte, ich würde diskutieren und meine Beobachtungen teilen, die anderen in Zukunft helfen würden.

Die Übertragung von Daten von einer Aktivität zu einer anderen kann mithilfe passender serialisierbarer oder parzellierbarer Objekte in einer Aktivitätsabsicht erfolgen. Die Android-Entwickler-Website empfiehlt die Verwendung der Parcelable-Schnittstelle für diesen Zweck (link).

Meine Frage bezog sich jedoch auf den Effizienzvergleich zwischen der Übergabe von Parcelable-Objekt und JSON-Zeichenfolge.

Um dies zu testen, habe ich ein altes und Low-End-Android-Gerät verwendet. Ich habe eine Aktivität gestartet, indem ich ein großes Parcelable-Objekt in einer Aktivitätsabsicht gesendet habe. Als Nächstes habe ich die gleiche Aktivität mit der JSON-Zeichenfolge des gleichen Objekts in der Aktivitätsabsicht gestartet. Was ich beobachtete, war eine signifikante beobachtbare Latenz beim Starten einer Aktivität durch Senden einer JSON-Zeichenfolge anstelle von Parcelable Object.

Zusammenfassend, auch wenn wir einen JSON-String übergeben, implementiert ein String-Objekt Serializable. Google empfiehlt die Verwendung von Parcelable anstelle von serialisierbaren Objekten. Dies ist normalerweise unbedeutend im Falle von Ketten vernachlässigbarer Länge. Im Falle massiver Json Strings von massiven Objekten, wird die Effizienz sicherlich einen Tribut fordern.

Sie könnten dies für performance benchmark of Parcelable vs Serializable verweisen.