Parcelable vs Serializable: Istina je negde tamo

Autor ovog članka je profesionalni softverski inženjer i nudi konsultantske usluge android razvoja i obuke. Više informacija ovde.

Do skora sam isključivo koristio java serijalizaciju kao mehanizam prenosa objekata između aktivnosti. Bio sam svestan Parcelable interfejsa i navodnih prednosti koje isti nudi ali nisam imao potrebu za njim jer nikad nisam iskusio realni pad performansi usled korišćenja java serijalizacije. Dok je sa jedne strane dovoljno samo obeležiti klasu Serializable interfejsom Parcelable ipak zahteva dosta “boilerplate” koda. Kada sam se nedavno uključio na projekat koji ne koristi java serijalizaciju već Parcelable mehanizam nije mi trebalo dugo da se naviknem jer: a) ovaj pristup je navodno za red veličine brži i b) postoji super biblioteka, Parceler, koja lišava programera potrebe da piše dodatni kod i sama genereše potrebne metode.

Upravo sam implementirao prvu veću funkcionalnost kada je počela da se javlja greška za koju ranije nisam čuo – aplikacija je pucala bacajući TransactionTooLargeException (ili samo uz log E: !!! FAILED BINDER TRANSACTION !!! na pre API 15 nivou). Brza google pretraga me je uvukla u svet RPCa i transakcionih bafera, svet koga sam bio blaženo nesvestan do tad. Saznao sam da postoji nešto što se zove “binder transaction buffer”, i još da ga dele sve transakcije koje se dešavaju u istom trenutku. Istina moj kod transferuje prilično veliki graf objekata kroz intent za startovanje druge aktivnosti, što možda nije najbolja ideja, ali nemoguće da udaram u limit od 1MB?

Continue reading Parcelable vs Serializable: Istina je negde tamo