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