Sobes.tech
Middle

Androidда Serializable жана Parcelable ортосунда кандай айырма бар?

sobes.tech AI

AIден жооп

Негізгі айырма өнімділік пен жүзеге асыру әдісінде.

  • Serializable:

    • Java SE-нің стандартты интерфейсі.
    • Жеңіл жүзеге асыру (интерфейсті жүзеге асыру жеткілікті).
    • Java Reflection API-ны сериализация үшін пайдаланады, бұл баяу және көп жадты талап етеді.
    • Кіші объектілер немесе сериализацияның өнімділігі маңызды емес кезде қолайлы.
  • Parcelable:

    • Android SDK үшін арнайы интерфейс.
    • Сериализация/десериализация процесін нақты сипаттауды талап етеді.
    • Reflection-ке сүйенбегендіктен, айтарлықтай тезірек және тиімдірек, жадты пайдалану жағынан.
    • Android компоненттері арасында объектілерді тасымалдау және күйін сақтау үшін ең жақсы таңдау.

Parcelable жүзеге асыру үшін:

  1. Parcelable интерфейсін жүзеге асыру.
  2. writeToParcel() әдісін жүзеге асыру, деректерді Parcel-ға жазу үшін.
  3. describeContents() әдісін жүзеге асыру.
  4. CREATOR статикалық объектін құру, ол Parcelable.Creator интерфейсін жүзеге асырады.
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);
    }
}

Салыстыру кестесі:

Ерекшелік Serializable Parcelable
Кітапхана java.io android.os
Өнімділік Төмен (Reflection пайдаланады) Жоғары
Жады тиімділігі Төмен Жоғары
Реализация Жеңіл Күрделірек
Қолданылуы Жалпы Java, кіші деректер Android, компоненттер арасында деректерді тасымалдау