Sobes.tech
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 Parcelable arayüzünü uygulaması gerekir.
  • writeToParcel(Parcel dest, int flags) metodunu geçersiz kılın, burada nesnenin tüm alanlarını writeInt(), writeString() gibi metodlarla Parcel'a yazın.

Deserileştirme (nesneyi okuma):

  • Parcelable.Creator<T> türünde statik bir alan olan CREATOR oluşturun, bu alan şu metodları uygular:
    • createFromParcel(Parcel in)Parcel'dan verileri okur ve nesneyi oluşturur.
    • newArray(int size) — nesnelerin dizisini oluşturur.
  • Parcel alanı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")