Junior — Middle
Jak se provádí serializace a deserializace objektů pomocí Parcelable v Androidu?
sobes.tech AI
Odpověď od AI
V Androidu se rozhraní Parcelable používá k efektivní serializaci objektů, aby je bylo možné přenášet mezi komponentami (například mezi Activity přes Intent).
Serializace (zápis objektu):
- Třída musí implementovat rozhraní
Parcelable. - Přepsat metodu
writeToParcel(Parcel dest, int flags), kde zapíšete všechna pole objektu doParcelpomocí metod jakowriteInt(),writeString()atd.
Deserializace (čtení objektu):
- Vytvořit statické pole
CREATORtypuParcelable.Creator<T>, které implementuje metody:createFromParcel(Parcel in)— čte data zParcela vytváří objekt.newArray(int size)— vytváří pole objektů.
- V konstruktoru, který přijímá
Parcel, přečíst pole ve stejném pořadí, v jakém byla zapsána.
Příklad:
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)
}
}
Tímto způsobem lze objekt přenést přes Intent:
intent.putExtra("user", user)
a načíst:
val user = intent.getParcelableExtra<User>("user")