2016-04-23 30 views
6

Sono consapevole che ci sono alcune risposte alla mia domanda, ma le risposte non sono molto elaborate o convincenti. Nel mio programma, per trasmettere dati da un'attività ad altra sto convertendo il contenuto della classe POJO in una stringa normale e passando (METODO1).Android Intent che passa oggetto parcelable e passa stringa Json

Method1

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

Method2

bundle.putExtra(JSON_STRING_KEY, parcelableObject); 

La mia domanda è: quale di questi due metodi sono preferibili solo in termini di prestazioni? Ho sempre creduto che rendere una classe parcelable o serializable fosse inefficiente. In METODO 1, non è necessario apportare alcuna modifica alla mia classe POJO.

+0

Ragazzi, per favore non fare una domanda a valle senza nemmeno commentare o rispondere a questo proposito ... – oathkeeper

+0

Dai un'occhiata qui, http://www.stevenmarkford.com/passing-objects-between-android-activities/ e qui, https://bitbucket.org/afrishman/androidserializationtest. Scegliere saggiamente. –

+0

Non sto cercando di confrontare tra serializzabile e parcelable. Sto solo cercando di verificare la differenza di prestazioni tra il passaggio di una stringa normale e un oggetto parcelable. – oathkeeper

risposta

9

Per quanto odio rispondere alle mie stesse domande, ho pensato di discutere e condividere le mie osservazioni che potrebbero aiutare gli altri in futuro.

La trasmissione di dati da un'attività all'altra può essere effettuata utilizzando oggetti Serializable o Parcelable che passano in uno scopo di attività. Il sito Web per sviluppatori Android consiglia l'utilizzo dell'interfaccia Parcelable per questo scopo (link).

Tuttavia, la mia domanda riguardava il confronto di efficienza tra il passaggio di oggetti Parcelable e la stringa JSON.

Per verificarlo, ho utilizzato un dispositivo Android vecchio e di fascia bassa. Ho avviato un'attività inviando un grande oggetto Parcelable in un intento di attività. Successivamente ho lanciato la stessa attività utilizzando la stringa JSON dello stesso oggetto nell'intento dell'attività. Quello che ho osservato è stata una significativa latenza osservabile durante l'avvio di un'attività inviando una stringa JSON invece di Parcelable Object.

In conclusione, anche se passiamo una stringa JSON, un oggetto String implementa Serializable. Google consiglia di utilizzare Parcelable anziché oggetti serializzabili. Questo di solito sarà insignificante in caso di stringhe di lunghezza trascurabile. Tuttavia, in caso di enormi corde JSON di oggetti massicci, l'efficienza richiederà certamente un pedaggio.

Si può fare riferimento a performance benchmark of Parcelable vs Serializable.