Назад к вопросам
Junior — Middle
75
Каким образом осуществляется сериализация и десериализация объектов с помощью Parcelable в Android?
Компании, где спрашивали
ПСБ
Ответ от нейросети
sobes.tech AI
В Android интерфейс Parcelable используется для эффективной сериализации объектов, чтобы передавать их между компонентами (например, между Activity через Intent).
Сериализация (запись объекта):
- Класс должен реализовать интерфейс
Parcelable. - Переопределить метод
writeToParcel(Parcel dest, int flags), где записать все поля объекта вParcelс помощью методовwriteInt(),writeString()и т.д.
Десериализация (чтение объекта):
- Создать статическое поле
CREATORтипаParcelable.Creator<T>, которое реализует методы:createFromParcel(Parcel in)— читает данные изParcelи создает объект.newArray(int size)— создает массив объектов.
- В конструкторе, принимающем
Parcel, прочитать поля в том же порядке, в каком они записывались.
Пример:
class User(val name: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString() ?: "",
parcel.readInt()
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(name)
parcel.writeInt(age)
}
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)
}
}
Таким образом, объект можно передать через Intent:
intent.putExtra("user", user)
и получить:
val user = intent.getParcelableExtra<User>("user")