Junior — Middle
Cum se realizează serializarea și deserializarea obiectelor folosind Parcelable în Android?
sobes.tech AI
Răspuns de la AI
În Android, interfața Parcelable este utilizată pentru serializarea eficientă a obiectelor, pentru a le transfera între componente (de exemplu, între Activity prin Intent).
Serializare (scrierea obiectului):
- Clasa trebuie să implementeze interfața
Parcelable. - Suprascrieți metoda
writeToParcel(Parcel dest, int flags), unde scrieți toate câmpurile obiectului înParcelfolosind metode precumwriteInt(),writeString(), etc.
Deserializare (citirea obiectului):
- Creați un câmp static
CREATORde tipParcelable.Creator<T>, care implementează metodele:createFromParcel(Parcel in)— citește datele dinParcelși creează obiectul.newArray(int size)— creează un array de obiecte.
- În constructorul care primește un
Parcel, citiți câmpurile în aceeași ordine în care au fost scrise.
Exemplu:
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)
}
}
Astfel, obiectul poate fi transmis prin Intent:
intent.putExtra("user", user)
și recuperat cu:
val user = intent.getParcelableExtra<User>("user")