Junior — Middle
Как се извършва сериализацията и десериализацията на обекти с помощта на Parcelable в Android?
sobes.tech AI
Отговор от 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")