Sobes.tech
Junior

Mi az az objektumok sorosítása és elemzése az Androidban?

sobes.tech MI

Válasz az MI-től

A sorosítás az a folyamat, amikor egy objektumot bájtfolyamba alakítunk, hogy elmentsük (például fájlban vagy adatbázisban), vagy továbbítsuk (például hálózaton keresztül). A deszerializálás (vagy parse) ennek fordított folyamata: az objektum visszaállítása a bájtfolyamból. Androidban erre a célra leggyakrabban a Serializable vagy a Parcelable használatos.

A Serializable (a Java szabványos interfésze): könnyen használható (csak az interfészt kell megvalósítani), de lassabb, mint a Parcelable, és sok ideiglenes objektumot hoz létre.

// Serializable példa
import java.io.Serializable;

public class MySerializableObject implements Serializable {
    private static final long serialVersionUID = 1L; // Ajánlott megadni
    private String name;
    private int age;

    public MySerializableObject(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getterek és setterek
}

A Parcelable (Android-specifikus interfész): gyorsabb és hatékonyabb, mint a Serializable, mert IPC-re van optimalizálva. Több kódot igényel.

// Parcelable példa
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;
    }

    // Deserializáláshoz konstruktor
    protected MyParcelableObject(Parcel in) {
        name = in.readString();
        age = in.readInt();
    }

    // Creator az objektumok létrehozásához a Parcel-ból
    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; // Általában 0
    }

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

    // Getterek és setterek
}

Összehasonlítás:

Jellemző Serializable Parcelable
Interfész java.io.Serializable android.os.Parcelable
Teljesítmény Lassabb Gyorsabb
Könnyű használat Egyszerűbb (kevesebb kód) Nehezebb (több kód)
Használat Általános Java Android (IPC, Bundles, Intents)
Objektum létrehozás Több ideiglenes objektum Kevesebb ideiglenes objektum

A Parcelable az előnyösebb az adatok átadására az Android alkalmazás komponensei között (például Intent vagy Bundle segítségével).