Junior — Middle
Kaip vykdoma objektų serializacija ir deserializacija naudojant Parcelable Android?
sobes.tech AI
Atsakymas iš AI
Android'e Parcelable sąsaja naudojama efektyviai objektų serializacijai, leidžiant jiems būti perduodamiems tarp komponentų (pavyzdžiui, tarp Activity per Intent).
Serializacija (objekto įrašymas):
- Klasė turi įgyvendinti
Parcelablesąsają. - Perrašyti metodą
writeToParcel(Parcel dest, int flags), kuriame įrašomi visi objekto laukai įParcelnaudojantwriteInt(),writeString()ir kt.
Deserializacija (objekto skaitymas):
- Sukurti statinį lauką
CREATORtipoParcelable.Creator<T>, kuris įgyvendina šiuos metodus:createFromParcel(Parcel in)— skaito duomenis išParcelir sukuria objektą.newArray(int size)— sukuria objektų masyvą.
- Konstruktoriuose, kurie priima
Parcel, skaitykite laukus tokia pačia tvarka, kaip jie buvo įrašyti.
Pavyzdys:
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)
}
}
Taip, objektas gali būti perduotas per Intent:
intent.putExtra("user", user)
ir gautas:
val user = intent.getParcelableExtra<User>("user")