Junior — Middle
Androidда Parcelable аркылуу объекттердин сериализациясы жана десериализациясы кандай жүргүзүлөт?
sobes.tech AI
AIден жооп
Androidда, Parcelable интерфейси эффективдүү сериализация үчүн колдонулат жана ал компоненттердин ортосунда (мисалы, Activity арасында Intent аркылуу) өткөрүүгө мүмкүндүк берет.
Сериализация (объектти жазуу):
- Класс
Parcelableинтерфейсин ишке ашырган болушу керек. writeToParcel(Parcel dest, int flags)методуна кайра жазып, бардык талаалардыwriteInt(),writeString()жана башка методдор мененParcelга жазуу керек.
Десериализация (объектти окуу):
- Статикалык
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")