Junior — Middle
Androidda Parcelable yordamida obyektlarni serializatsiya qilish va deserializatsiya qilish qanday amalga oshiriladi?
sobes.tech AI
AIdan javob
Androidda, Parcelable interfeysi obyektlarni samarali seriyalash uchun ishlatiladi va ularni komponentlar o'rtasida (masalan, Activity o'rtasida Intent orqali) o'tkazishga imkon beradi.
Seriyalash (obyektni yozish):
- Sinf
Parcelableinterfeysini amalga oshirishi kerak. writeToParcel(Parcel dest, int flags)metodini qayta yozing, bu yerda obyektning barcha maydonlariniwriteInt(),writeString()va hokazo metodlar yordamidaParcelga yozing.
Deseriyalash (obyektni o'qish):
Parcelable.Creator<T>turidagi statikCREATORmaydonini yarating, u quyidagi metodlarni amalga oshiradi:createFromParcel(Parcel in)—Parceldan ma'lumotlarni o'qib, obyektni yaratadi.newArray(int size)— obyektlar massivini yaratadi.
Parcelni qabul qiladigan konstruktorida, maydonlarni yozilgan tartibda o'qing.
Misol:
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)
}
}
Shunday qilib, obyekt Intent orqali o'tkazilishi mumkin:
intent.putExtra("user", user)
va olinishi:
val user = intent.getParcelableExtra<User>("user")