Junior — Middle
Comment la sérialisation et la désérialisation d'objets sont-elles effectuées avec Parcelable dans Android?
sobes.tech IA
Réponse de l'IA
En Android, l'interface Parcelable est utilisée pour sérialiser efficacement des objets afin de les transmettre entre composants (par exemple, entre Activity via Intent).
Sérialisation (écriture de l'objet):
- La classe doit implémenter l'interface
Parcelable. - Redéfinir la méthode
writeToParcel(Parcel dest, int flags), où tous les champs de l'objet sont écrits dans leParcelà l'aide de méthodes commewriteInt(),writeString(), etc.
Désérialisation (lecture de l'objet):
- Créer un champ statique
CREATORde typeParcelable.Creator<T>, qui implémente les méthodes:createFromParcel(Parcel in)— lit les données duParcelet crée l'objet.newArray(int size)— crée un tableau d'objets.
- Dans le constructeur prenant un
Parcel, lire les champs dans le même ordre dans lequel ils ont été écrits.
Exemple:
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)
}
}
Ainsi, l'objet peut être transmis via un Intent:
intent.putExtra("user", user)
et obtenu avec:
val user = intent.getParcelableExtra<User>("user")