Sobes.tech
Junior — Middle

Android-də Parcelable istifadə edərək obyektlərin seriyalaşdırılması və deserializasiyası necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Android-də, Parcelable interfeysi obyektlərin effektiv seriyalash üçün istifadə olunur və onları komponentlər arasında (məsələn, Activity arasında Intent vasitəsilə) ötürməyə imkan verir.

Seriyalash (obyekti yazmaq):

  • Sinif Parcelable interfeysini həyata keçirməlidir.
  • writeToParcel(Parcel dest, int flags) metodunu yenidən yazın, burada obyektin bütün sahələrini writeInt(), writeString() və s. metodları ilə Parcel-a yazın.

Deseriyalash (obyekti oxumaq):

  • Parcelable.Creator<T> tipində statik CREATOR sahəsini yaradın, bu metodları həyata keçirir:
    • createFromParcel(Parcel in)Parcel-dan məlumatları oxuyur və obyekt yaradır.
    • newArray(int size) — obyektlərin massivini yaradır.
  • Parcel-ı qəbul edən konstruktorunda, sahələri yazıldığı ardıcıllıqla oxuyun.

Nümunə:

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

Beləliklə, obyekt Intent vasitəsilə ötürülə bilər:

intent.putExtra("user", user)

və alınır:

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