Я читал много постов и статей, восхваляющих скорость Parcelable по сравнению с Serializable. Некоторое время я использовал оба для передачи данных между Деятельностями через Intents, и еще не заметил какой-либо разницы в скорости при переключении между ними. Типичный объем данных, которые мне нужно передать, составляет от 5 до 15 вложенных объектов с 2-5 полями в каждом.
Поскольку у меня есть около 30 классов, которые должны быть переданы, реализация Parcelable требует большого количества стандартного кода, который добавляет время на обслуживание. Одно из моих текущих требований также состоит в том, чтобы скомпилированный код был как можно меньше; Я ожидаю, что смогу сэкономить некоторое пространство, используя Serializable вместо Parcelable.
Должен ли я использовать Parcelable или нет причин использовать его поверх Serializable для таких небольших объемов данных? Или есть еще одна причина, по которой я не должен использовать Serializable?
Для использования в памяти Parcelable намного лучше, чем Serializable. Я настоятельно рекомендую не использовать Serializable.
Вы не можете использовать Parcelable для данных, которые будут храниться на диске (поскольку у него нет хороших гарантий согласованности данных при изменении вещей), однако Serializable достаточно медленный, поэтому я настоятельно рекомендую не использовать его и там. Вам лучше написать данные самостоятельно.
Кроме того, одна из проблем производительности с Serializable заключается в том, что он заканчивает прокрутку множества временных объектов, вызывая большую активность GC в вашем приложении. Это довольно отвратительно. :}