Junior — Middle
Kuidas toimub objektide serialiseerimine ja deserialiseerimine Parcelable abil Androidis?
sobes.tech AI
Vastus AI-lt
Androidis kasutatakse Parcelable liidest objekti tõhusaks serialiseerimiseks, võimaldades nende edastamist komponentide vahel (näiteks Activity vahel Intent'i kaudu).
Serialiseerimine (objekti kirjutamine):
- Klass peab implementeerima
Parcelableliidest. - Ümberkirjutada meetod
writeToParcel(Parcel dest, int flags), kus kirjutatakse kõik objekti väljadParcel'i, kasutades meetodeid naguwriteInt(),writeString()jne.
Deserialiseerimine (objekti lugemine):
- Luua staatiline väli
CREATORtüüpiParcelable.Creator<T>, mis implementeerib järgmised meetodid:createFromParcel(Parcel in)— loeb andmedParcel'ist ja loob objekti.newArray(int size)— loob objekti massiivi.
- Konstruktoris, mis võtab vastu
Parcel, loe väljad samas järjekorras, nagu need olid kirjutatud.
Näide:
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)
}
}
Seega, objekt võib olla edastatud Intent'i kaudu:
intent.putExtra("user", user)
ning seda saab kätte:
val user = intent.getParcelableExtra<User>("user")