Junior — Middle
¿Cómo se realiza la serialización y deserialización de objetos usando Parcelable en Android?
sobes.tech AI
Respuesta de la IA
En Android, la interfaz Parcelable se utiliza para serializar objetos de manera eficiente, permitiendo transferirlos entre componentes (por ejemplo, entre Activity mediante Intent).
Serialización (escribir objeto):
- La clase debe implementar la interfaz
Parcelable. - Sobrescribir el método
writeToParcel(Parcel dest, int flags), donde se escriben todos los campos del objeto enParcelusando métodos comowriteInt(),writeString(), etc.
Deserialización (leer objeto):
- Crear un campo estático
CREATORde tipoParcelable.Creator<T>, que implemente los métodos:createFromParcel(Parcel in)— lee los datos deParcely crea el objeto.newArray(int size)— crea un array de objetos.
- En el constructor que recibe un
Parcel, leer los campos en el mismo orden en que fueron escritos.
Ejemplo:
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)
}
}
De esta manera, el objeto se puede transferir a través de un Intent:
intent.putExtra("user", user)
y obtenerlo con:
val user = intent.getParcelableExtra<User>("user")