Junior — Middle
Jak odbywa się serializacja i deserializacja obiektów za pomocą Parcelable w Android?
sobes.tech AI
Odpowiedź od AI
W Androidzie, interfejs Parcelable jest używany do efektywnej serializacji obiektów, aby można je było przekazywać między komponentami (np. między Activity za pomocą Intent).
Serializacja (zapis obiektu):
- Klasa musi implementować interfejs
Parcelable. - Nadpisać metodę
writeToParcel(Parcel dest, int flags), w której zapisuje się wszystkie pola obiektu doParcelza pomocą metod takich jakwriteInt(),writeString()itp.
Deserializacja (odczyt obiektu):
- Utworzyć statyczne pole
CREATORtypuParcelable.Creator<T>, które implementuje metody:createFromParcel(Parcel in)— odczytuje dane zParceli tworzy obiekt.newArray(int size)— tworzy tablicę obiektów.
- W konstruktorze przyjmującym
Parcelodczytać pola w tym samym porządku, w jakim były zapisywane.
Przykład:
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)
}
}
W ten sposób obiekt można przekazać przez Intent:
intent.putExtra("user", user)
i odczytać:
val user = intent.getParcelableExtra<User>("user")