Junior
Serileştirilebilir ve paketlenebilir nesneler nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Serileştirilebilir nesneler, Java'nın standart mekanizması java.io.Serializable kullanılarak depolama veya iletim için bayt akışına dönüştürülebilir.
Parcellenebilir nesneler de paketlenip açılabilir, ancak Android'in özel mekanizması android.os.Parcelable kullanılır. Bu mekanizma, IPC (İşlemlerarası İletişim) için optimize edildiği için Android bileşenleri arasında veri iletiminde daha etkilidir.
| Özellik | Serializable |
Parcelable |
|---|---|---|
| Mekanizma | Java yansıması | Android Parceling API |
| Performans | Daha az verimli (yansıma kullanır) | Daha verimli |
| Uygulama | Standart Java uygulaması, uzak metod çağrıları (RMI) | Android'e özgü, aktiviteler, servisler arasında veri iletimi |
| İş akışı | Daha az kod | Daha fazla kod |
Parcelable uygulamasına örnek:
// MyParcelableObject.java
package com.example.myapplication;
import android.os.Parcel;
import android.os.Parcelable;
public class MyParcelableObject implements Parcelable {
private String name;
private int value;
public MyParcelableObject(String name, int value) {
this.name = name;
this.value = value;
}
protected MyParcelableObject(Parcel in) {
name = in.readString();
value = in.readInt();
}
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; // Genellikle 0, özel dosya tanımlayıcıları yoksa
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(value);
}
// Getters (kısaltmak için atlandı)
}