Sobes.tech
Middle

Android'da Serializable va Parcelable o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Asosiy farq ishlash va amalga oshirish usulida.

  • Serializable:

    • Java SE ning standart interfeysi.
    • Implementatsiyasi osonroq (faqat interfeysni amalga oshirish kifoya).
    • Java Reflection API yordamida serializatsiya qiladi, bu sekinroq va ko'proq xotira talab qiladi.
    • Kichik ob'ektlar yoki serializatsiya ishlash tezligi muhim bo'lmagan hollarda mos keladi.
  • Parcelable:

    • Android SDK uchun maxsus interfeys.
    • Serializatsiya/deserializatsiya jarayonini aniq tavsiflashni talab qiladi.
    • Reflectionga tayanmaydi, shuning uchun ancha tez va xotira samaraliroq.
    • Androidda ob'ektlarni komponentlar o'rtasida uzatish (Activity, Service, BroadcastReceiver) va holatni saqlash uchun eng yaxshi tanlov.

Parcelable ni amalga oshirish uchun:

  1. Parcelable interfeysini amalga oshiring.
  2. Ma'lumotlarni Parcel ga yozish uchun writeToParcel() metodini amalga oshiring.
  3. describeContents() metodini amalga oshiring.
  4. CREATOR nomli statik obyektni yarating, bu Parcelable.Creator ning amalga oshirilishi.
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);
    }
}

Taqqoslash jadvali:

Xususiyat Serializable Parcelable
Kutubxona java.io android.os
Ishlash tezligi Past (Reflection ishlatadi) Yuqori
Xotira samaradorligi Past Yuqori
Amalga oshirish Oddiy Murakkab
Foydalanish Java umumiy, kichik ma'lumotlar Android, komponentlar o'rtasida ma'lumot uzatish