Junior — Middle
Hoe wordt de serialisatie en deserialisatie van objecten uitgevoerd met Parcelable in Android?
sobes.tech AI
Antwoord van AI
In Android wordt de Parcelable-interface gebruikt voor efficiënte serialisatie van objecten, zodat ze tussen componenten kunnen worden overgedragen (bijvoorbeeld tussen Activity via Intent).
Serialisatie (object schrijven):
- De klasse moet de interface
Parcelableimplementeren. - Overschrijf de methode
writeToParcel(Parcel dest, int flags), waarin alle velden van het object worden geschreven naar deParcelmet behulp van methoden zoalswriteInt(),writeString(), enz.
Deserialisatie (object lezen):
- Maak een statisch veld
CREATORvan het typeParcelable.Creator<T>, dat de methoden implementeert:createFromParcel(Parcel in)— leest de gegevens uit deParcelen maakt het object aan.newArray(int size)— maakt een array van objecten.
- In de constructor die een
Parcelontvangt, lees je de velden in dezelfde volgorde als ze zijn geschreven.
Voorbeeld:
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)
}
}
Zo kan het object via een Intent worden overgedragen:
intent.putExtra("user", user)
en worden opgehaald met:
val user = intent.getParcelableExtra<User>("user")