Sobes.tech
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ı)
}