Junior — Middle
Wie erfolgt die Serialisierung und Deserialisierung von Objekten mit Parcelable in Android?
sobes.tech KI
Antwort von AI
In Android wird die Schnittstelle Parcelable verwendet, um Objekte effizient zu serialisieren, damit sie zwischen Komponenten übertragen werden können (z.B. zwischen Activity via Intent).
Serialisierung (Schreiben des Objekts):
- Die Klasse muss die Schnittstelle
Parcelableimplementieren. - Überschreiben Sie die Methode
writeToParcel(Parcel dest, int flags), in der alle Felder des Objekts in denParcelgeschrieben werden, z.B. mitwriteInt(),writeString()usw.
Deserialisierung (Lesen des Objekts):
- Erstellen Sie ein statisches Feld
CREATORvom TypParcelable.Creator<T>, das die Methoden:createFromParcel(Parcel in)— liest die Daten aus demParcelund erstellt das Objekt.newArray(int size)— erstellt ein Array von Objekten.
- Im Konstruktor, der einen
Parcelentgegennimmt, lesen Sie die Felder in der gleichen Reihenfolge, in der sie geschrieben wurden.
Beispiel:
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)
}
}
Auf diese Weise kann das Objekt über einen Intent übertragen werden:
intent.putExtra("user", user)
und abgerufen werden mit:
val user = intent.getParcelableExtra<User>("user")