Sobes.tech
Junior

Android-də obyektlərin seriyalaşdırılması və parse edilməsi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Seriyalaşdırma — obyektin bayt axınına çevrilməsi prosesidir ki, bu da saxlanması üçün (məsələn, fayl və ya verilənlər bazasında) və ya ötürülməsi üçün (məsələn, şəbəkə vasitəsilə) istifadə olunur. Parsinq (və ya deserializasiya) isə əks prosesdir: bayt axınından obyektin bərpası. Android-də bu məqsədlər üçün ən çox Serializable və ya Parcelable istifadə olunur.

Serializable (Java-nın standart interfeysi): istifadə etmək asandır (yalnız interfeysi həyata keçirmək lazımdır), lakin Parcelable-dən daha yavaşdır və çox sayda müvəqqəti obyekt yaradır.

// Serializable nümunəsi
import java.io.Serializable;

public class MySerializableObject implements Serializable {
    private static final long serialVersionUID = 1L; // Tövsiyə olunur göstərmək
    private String name;
    private int age;

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

    // Getter və setterlər
}

Parcelable (Android-ə xas interfeys): Serializable-dən daha sürətli və daha effektivdir, çünki IPC üçün optimallaşdırılmışdır. Daha çox kod tələb edir.

// Parcelable nümunəsi
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;
    }

    // Deserializasiya üçün konstruktor
    protected MyParcelableObject(Parcel in) {
        name = in.readString();
        age = in.readInt();
    }

    // Parcel-dən nümunələr yaratmaq üçün 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; // Əksər obyektlər üçün həmişə 0
    }

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

    // Getter və setterlər
}

Müqayisə:

Xüsusiyyət Serializable Parcelable
İnterfeys java.io.Serializable android.os.Parcelable
Performans Daha yavaş Daha sürətli
İstifadə asanlığı Daha asan (daha az kod) Daha çətin (daha çox kod)
İstifadə sahəsi Ümumi Java Android (IPC, Bundles, Intents)
Obyekt yaradılması Daha çox müvəqqəti obyekt Daha az müvəqqəti obyekt

Parcelable Android tətbiqlərində komponentlər arasında məlumat ötürmək üçün üstünlük verilən üsuldur (məsələn, Intent və ya Bundle vasitəsilə).