Junior — Middle
Android'de Parcelable kullanarak nesnelerin seri hale getirilmesi ve tersine çevrilmesi nasıl yapılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Android'de, Parcelable arayüzü, nesnelerin verimli bir şekilde serileştirilmesi için kullanılır ve bunların bileşenler arasında (örneğin, Activity arasında Intent aracılığıyla) aktarılmasını sağlar.
Serileştirme (nesneyi yazma):
- Sınıfın
Parcelablearayüzünü uygulaması gerekir. writeToParcel(Parcel dest, int flags)metodunu geçersiz kılın, burada nesnenin tüm alanlarınıwriteInt(),writeString()gibi metodlarlaParcel'a yazın.
Deserileştirme (nesneyi okuma):
Parcelable.Creator<T>türünde statik bir alan olanCREATORoluşturun, bu alan şu metodları uygular:createFromParcel(Parcel in)—Parcel'dan verileri okur ve nesneyi oluşturur.newArray(int size)— nesnelerin dizisini oluşturur.
Parcelalanını alan yapıcıda, alanları yazıldığı sırayla okuyun.
Örnek:
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)
}
}
Bu şekilde, nesne Intent aracılığıyla aktarılabilir:
intent.putExtra("user", user)
ve alınabilir:
val user = intent.getParcelableExtra<User>("user")