Sobes.tech
Junior — Middle

Kā tiek veikta objektu serializācija un deserializācija, izmantojot Parcelable Android?

sobes.tech AI

Atbilde no AI

Android platformā, Parcelable saskarne tiek izmantota efektīvai objektu serializācijai, ļaujot tos pārsūtīt starp komponentiem (piemēram, starp Activity, izmantojot Intent).

Serializācija (objekta rakstīšana):

  • Klasei jāīsteno Parcelable saskarne.
  • Pārdefinējiet metodi writeToParcel(Parcel dest, int flags), kurā visi objekta lauki tiek rakstīti Parcel ar metodēm kā writeInt(), writeString() u.c.

Deserializācija (objekta lasīšana):

  • Izveidojiet statisku lauku CREATOR tipā Parcelable.Creator<T>, kas īsteno šīs metodes:
    • createFromParcel(Parcel in) — lasa datus no Parcel un izveido objektu.
    • newArray(int size) — izveido objektu masīvu.
  • Konstruktorā, kas pieņem Parcel, lasiet laukus tajā pašā secībā, kā tie tika rakstīti.

Piemērs:

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)
    }
}

Tādējādi, objekts var tikt pārsūtīts ar Intent:

intent.putExtra("user", user)

un saņemts:

val user = intent.getParcelableExtra<User>("user")