Junior — Middle
Hogyan történik az objektumok serializálása és deserializálása Parcelable segítségével Androidban?
sobes.tech MI
Válasz az MI-től
Androidben a Parcelable interfész hatékony objektum-szerializációra szolgál, lehetővé téve azok átadását komponensek között (például Activity között Intent segítségével).
Szerializáció (objektum írása):
- A osztálynak implementálnia kell a
Parcelableinterfészt. - Felül kell írni a
writeToParcel(Parcel dest, int flags)metódust, ahol az összes mezőt írjuk aParcel-bawriteInt(),writeString()stb. segítségével.
Deszerializáció (objektum olvasása):
- Létre kell hozni egy statikus
CREATORmezőtParcelable.Creator<T>típusban, amely implementálja a következő metódusokat:createFromParcel(Parcel in)— olvassa az adatokat aParcel-ból és létrehozza az objektumot.newArray(int size)— létrehoz egy objektum tömböt.
- A konstruktorban, amely egy
Parcel-t kap, olvassa be a mezőket ugyanabban a sorrendben, ahogyan írták.
Példa:
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)
}
}
Így az objektum átadható Intenttel:
intent.putExtra("user", user)
és elérhető vele:
val user = intent.getParcelableExtra<User>("user")