Sobes.tech
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 en Parcel usando métodos como writeInt(), writeString(), etc.

Deserialización (leer objeto):

  • Crear un campo estático CREATOR de tipo Parcelable.Creator<T>, que implemente los métodos:
    • createFromParcel(Parcel in) — lee los datos de Parcel y 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")