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:
Parcelablearayüzünü uygula.writeToParcel()metodunu, verileriParcel'a yazacak şekilde uygula.describeContents()metodunu uygula.CREATORadında statik bir nesne oluştur, buParcelable.Creatorarayü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 |