Junior — Middle
Come vengono serializzati e deserializzati gli oggetti usando Parcelable in Android?
sobes.tech AI
Risposta dell'AI
In Android, l'interfaccia Parcelable viene utilizzata per serializzare in modo efficiente gli oggetti, consentendo di trasferirli tra componenti (ad esempio, tra Activity tramite Intent).
Serializzazione (scrittura dell'oggetto):
- La classe deve implementare l'interfaccia
Parcelable. - Sovrascrivere il metodo
writeToParcel(Parcel dest, int flags), dove si scrivono tutti i campi dell'oggetto nelParcelusando metodi comewriteInt(),writeString(), ecc.
Deserializzazione (lettura dell'oggetto):
- Creare un campo statico
CREATORdi tipoParcelable.Creator<T>, che implementa i metodi:createFromParcel(Parcel in)— legge i dati dalParcele crea l'oggetto.newArray(int size)— crea un array di oggetti.
- Nel costruttore che riceve un
Parcel, leggere i campi nello stesso ordine in cui sono stati scritti.
Esempio:
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)
}
}
In questo modo, l'oggetto può essere trasferito tramite Intent:
intent.putExtra("user", user)
e recuperato con:
val user = intent.getParcelableExtra<User>("user")