Android'de nesne serileştirme ve ayrıştırma nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Serileştirme, bir nesneyi depolama (örneğin, dosya veya veritabanında) veya iletme (örneğin, ağ üzerinden) amacıyla bayt akışına dönüştürme işlemidir.
Ayrıştırma (veya deserializasyon) ise ters işlemdir: bayt akışından bir nesneyi geri yükleme.
Android'de bu amaçlar için genellikle Serializable veya Parcelable kullanılır.
Serializable (Java'nın standart arayüzü): Kullanımı kolaydır (sadece arayüzü uygulamanız gerekir), ancak Parcelable'den daha yavaş ve çok sayıda geçici nesne oluşturur.
// Serializable örneği
import java.io.Serializable;
public class MySerializableObject implements Serializable {
private static final long serialVersionUID = 1L; // Tavsiye edilir
private String name;
private int age;
public MySerializableObject(String name, int age) {
this.name = name;
this.age = age;
}
// Getter ve setterlar
}
Parcelable (Android'e özgü arayüz): Serializable'den daha hızlı ve etkilidir, çünkü IPC (İşlemlerarası iletişim) için optimize edilmiştir. Daha fazla kod gerektirir.
// Parcelable örneği
import android.os.Parcel;
import android.os.Parcelable;
public class MyParcelableObject implements Parcelable {
private String name;
private int age;
public MyParcelableObject(String name, int age) {
this.name = name;
this.age = age;
}
// Deserializasyon için yapıcı
protected MyParcelableObject(Parcel in) {
name = in.readString();
age = in.readInt();
}
// Parcel'ten nesne oluşturmak için Creator
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; // Çoğu nesne için her zaman 0
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
// Getter ve setterlar
}
Karşılaştırma:
| Özellik | Serializable | Parcelable |
|---|---|---|
| Arayüzü | java.io.Serializable |
android.os.Parcelable |
| Performans | Daha yavaş | Daha hızlı |
| Kullanım Kolaylığı | Daha kolay (daha az kod) | Daha zor (daha fazla kod) |
| Kullanım Alanı | Genel Java | Android (IPC, Bundles, Intents) |
| Nesne Oluşumu | Daha fazla geçici nesne | Daha az geçici nesne |
Parcelable, Android uygulamasındaki bileşenler arasında veri iletimi için tercih edilir (örneğin, Intent veya Bundle aracılığıyla).