Junior — Middle
Como é que a serialização e a desserialização de objetos são realizadas usando Parcelable no Android?
sobes.tech IA
Resposta da IA
No Android, a interface Parcelable é usada para serializar objetos de forma eficiente, permitindo transferi-los entre componentes (por exemplo, entre Activity via Intent).
Serialização (escrever objeto):
- A classe deve implementar a interface
Parcelable. - Sobrescrever o método
writeToParcel(Parcel dest, int flags), onde todos os campos do objeto são escritos noParcelusando métodos comowriteInt(),writeString(), etc.
Desserialização (ler objeto):
- Criar um campo estático
CREATORdo tipoParcelable.Creator<T>, que implementa os métodos:createFromParcel(Parcel in)— lê os dados doParcele cria o objeto.newArray(int size)— cria um array de objetos.
- No construtor que recebe um
Parcel, ler os campos na mesma ordem em que foram escritos.
Exemplo:
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)
}
}
Dessa forma, o objeto pode ser passado via Intent:
intent.putExtra("user", user)
e obtido com:
val user = intent.getParcelableExtra<User>("user")