Sobes.tech
Junior — Middle

Ինչպես է իրականացնում օբյեկտների սերիալիզացիան և դեսերիալիզացիան Parcelable-ով Android-ում?

sobes.tech AI

Պատասխան AI-ից

Android-ում, Parcelable ինտերֆեյսը օգտագործվում է օբյեկտների արդյունավետ սերիալիզացման համար՝ նրանց փոխանցումը բաղադրիչների միջև (օրինակ՝ Activity-ների միջև Intent-ի միջոցով):

Սերիալիզացիա (օբյեկտի գրառում):

  • Կլասը պետք է իրականացնում Parcelable ինտերֆեյսը:
  • Պետք է վերագրել writeToParcel(Parcel dest, int flags) մեթոդը, որտեղ գրանցում եք բոլոր դաշտերը Parcel-ում writeInt(), writeString() և այլ մեթոդներով:

Դեսիալիզացիա (օբյեկտի ընթերցում):

  • Ստեղծեք CREATOR ստատիկ դաշտը Parcelable.Creator<T> տիպով, որը իրականացնում է հետևյալ մեթոդները՝
    • createFromParcel(Parcel in) — կարդում է տվյալները Parcel-ից և ստեղծում օբյեկտ:
    • newArray(int size) — ստեղծում է օբյեկտների զանգված:
  • Կոնստրուկտորում, որը ընդունում է Parcel, ընթերցեք դաշտերը նույն հերթականությամբ, ինչպես որ գրանցվել են:

Օրինակ՝

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

Այսպիսով, օբյեկտը կարող է փոխանցվել Intent-ի միջոցով՝

intent.putExtra("user", user)

և ստացվել՝

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