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