Sobes.tech
Middle

Android'de Serializable ve Parcelable arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Performans ve uygulama yöntemi açısından temel fark vardır.

  • Serializable:

    • Java SE'nin standart arayüzü.
    • Uygulaması daha basittir (sadece arayüzü uygularsınız).
    • Java Reflection API kullanır, bu da daha yavaş ve daha fazla bellek gerektirir.
    • Küçük nesneler veya serileştirme performansı kritik değilse uygundur.
  • Parcelable:

    • Android SDK için özel arayüz.
    • Serileştirme/deserialize işleminin açıkça tanımlanmasını gerektirir.
    • Reflection'a dayanmadığı için çok daha hızlı ve bellek kullanımı açısından etkilidir.
    • Android'de nesneleri bileşenler arasında iletmek (Activity, Service, BroadcastReceiver) ve durum kaydetmek için en iyi seçim.

Parcelable uygulaması için:

  1. Parcelable arayüzünü uygula.
  2. writeToParcel() metodunu, verileri Parcel'a yazacak şekilde uygula.
  3. describeContents() metodunu uygula.
  4. CREATOR adında statik bir nesne oluştur, bu Parcelable.Creator arayüzünün bir uygulamasıdır.
import android.os.Parcel;
import android.os.Parcelable;

public class MyParcelableObject implements Parcelable {
    private int value;
    private String name;

    public MyParcelableObject(int value, String name) {
        this.value = value;
        this.name = name;
    }

    protected MyParcelableObject(Parcel in) {
        value = in.readInt();
        name = in.readString();
    }

    public static final Creator<MyParcelableObject> CREATOR = new Creator<MyParcelableObject>() {
        @Override
        public MyParcelableObject createFromParcel(Parcel in) {
            return new MyParcelableObject(in);
        }

        @Override
        public MyParcelableObject[] newArray(int size) {
            return new MyParcelableObject[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(value);
        dest.writeString(name);
    }
}

Karşılaştırma tablosu:

Özellik Serializable Parcelable
Kütüphane java.io android.os
Performans Düşük (Reflection kullanır) Yüksek
Bellek kullanımı Düşük Yüksek
Uygulama zorluğu Daha basit Daha karmaşık
Kullanım Genel Java, küçük veriler Android, bileşenler arası veri iletimi