Junior — Middle
Kako se vrši serializacija i deserializacija objekata pomoću Parcelable u Androidu?
sobes.tech АИ
Одговор од АИ
U Androidu, interfejs Parcelable koristi se za efikasnu serijalizaciju objekata, omogućavajući njihovo prenošenje između komponenti (npr. između Activity-ja putem Intent-a).
Serijalizacija (pisanje objekta):
- Klasa mora implementirati interfejs
Parcelable. - Prepisati metodu
writeToParcel(Parcel dest, int flags), gde se svi atributi objekta upisuju uParcelpomoću metoda kao što suwriteInt(),writeString(), itd.
Deserijalizacija (čitanje objekta):
- Kreirati statičko polje
CREATORtipaParcelable.Creator<T>, koje implementira sledeće metode:createFromParcel(Parcel in)— čita podatke izParceli kreira objekat.newArray(int size)— kreira niz objekata.
- U konstruktoru koji prima
Parcel, čitati atribute u istom redosledu u kojem su zapisani.
Primer:
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)
}
}
Tako, objekat može biti prenesen putem Intent-a:
intent.putExtra("user", user)
i preuzet:
val user = intent.getParcelableExtra<User>("user")