Junior — Middle
Ako sa vykonáva serializácia a deserializácia objektov pomocou Parcelable v Android?
sobes.tech AI
Odpoveď od AI
V Androide sa rozhraním Parcelable sa efektívne serializujú objekty, aby ich bolo možné prenášať medzi komponentmi (napríklad medzi Activity pomocou Intent).
Serializácia (zápis objektu):
- Trieda musí implementovať rozhranie
Parcelable. - Prepisovať metódu
writeToParcel(Parcel dest, int flags), kde zapíšete všetky polia objektu doParcelpomocou metód akowriteInt(),writeString()a pod.
Deserializácia (čítanie objektu):
- Vytvoriť statické pole
CREATORtypuParcelable.Creator<T>, ktoré implementuje metódy:createFromParcel(Parcel in)— číta údaje zParcela vytvára objekt.newArray(int size)— vytvára pole objektov.
- V konštruktore, ktorý prijíma
Parcel, čítať polia v rovnakom poradí, v akom boli zapísané.
Prí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)
}
}
Takto je možné objekt preniesť cez Intent:
intent.putExtra("user", user)
a načítať:
val user = intent.getParcelableExtra<User>("user")