Sobes.tech
Middle

Android-də Serializable və Parcelable arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Əsas fərq performans və tətbiq üsulunda olur.

  • Serializable:

    • Java SE-nin standart interfeysidir.
    • Daha sadə tətbiq olunur (yalnız interfeysi tətbiq etmək kifayətdir).
    • Java Reflection API istifadə edir serializasiya üçün, bu isə daha yavaşdır və daha çox yaddaş tələb edir.
    • Kiçik obyektlər və ya serializasiyanın performansı kritik deyilsə uyğundur.
  • Parcelable:

    • Android SDK üçün xüsusi interfeys.
    • Serializasiya/deserializasiya prosesinin açıq şəkildə təsviri tələb olunur.
    • Reflection-a əsaslanmadığı üçün çox daha sürətli və yaddaşdan daha səmərəli istifadə edir.
    • Android-da obyektləri komponentlər arasında ötürmək (Activity, Service, BroadcastReceiver) və vəziyyəti saxlamaq üçün ən yaxşı seçim.

Parcelable-i tətbiq etmək üçün:

  1. Parcelable interfeysini tətbiq et.
  2. writeToParcel() metodunu, məlumatları Parcel-a yazmaq üçün tətbiq et.
  3. describeContents() metodunu tətbiq et.
  4. Statik CREATOR obyektini yarad, bu Parcelable.Creator-in tətbiqidir.
import android.os.Parcel;
import android.os.Parcelable;

public class MyParcelableObject implements Parcelable {
    private int value;
    private String name;

    public MyParcelableObject(int value, String name) {
        this.value = value;
        this.name = name;
    }

    protected MyParcelableObject(Parcel in) {
        value = in.readInt();
        name = in.readString();
    }

    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;
    }

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

Cədvəl müqayisəsi:

Xüsusiyyət Serializable Parcelable
Kitabxana java.io android.os
Performans Aşağı (Reflection istifadə edir) Yüksək
Yaddaş səmərəliliyi Aşağı Yüksək
Tətbiq Daha sadə Daha mürəkkəb
İstifadə Ümumi Java, kiçik məlumatlar Android, komponentlər arasında məlumat ötürülməsi