Для чего сделали Parcelable в Android

«Для чего сделали Parcelable в Android» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Parcelable — это интерфейс для сериализации объектов, оптимизированный под Android. Он быстрее Serializable, так как избегает накладных расходов на рефлексию и работает с Parcel — буфером данных, который эффективно передаётся между процессами (например, в Intent или Binder).

Пример реализации:

data class User(val id: Int, val name: String) : Parcelable {
    constructor(parcel: Parcel) : this(parcel.readInt(), parcel.readString()!!)

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeInt(id)
        parcel.writeString(name)
    }

    override fun describeContents() = 0

    companion object CREATOR : Parcelable.Creator<User> {
        override fun createFromParcel(parcel: Parcel) = User(parcel)
        override fun newArray(size: Int) = arrayOfNulls<User>(size)
    }
}

Используйте Parcelable для передачи сложных объектов между компонентами Android (Activity, Fragment, Service), особенно если важна производительность.