Sobes.tech
Junior

Androidда объекттердин сериализациясы жана парсинг эмне?

sobes.tech AI

AIден жооп

Сериализация — бул объектти байт агымына айландыру процесси, сактоо (мисалы, файлга же базада) же өткөрүү (мисалы, тармак аркылуу). Парсинг (же десериализация) — тескерисинче процесс: байт агымынан объектти калыбына келтирүү. Androidдо бул максаттар үчүн көбүнесе Serializable же Parcelable колдонулат.

Serializable (стандарт Java интерфейси): колдонууга оңой (тек интерфейсти ишке ашыруу керек), бирок Parcelableге караганда жайыраак жана көп убактылуу объекттер түзөт.

// Serializable мисал
import java.io.Serializable;

public class MySerializableObject implements Serializable {
    private static final long serialVersionUID = 1L; // сунушталат көрсөтүү
    private String name;
    private int age;

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

    // Getter жана Setter
}

Parcelable (Android-специфик интерфейс): Serializableге караганда тезирек жана эффективдүү, анткени IPC (ара-өндүрүштүк байланыш) үчүн оптимизацияланган. Реализациясы көбүрөөк кодду талап кылат.

// Parcelable мисал
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;
    }

    // Десериализация үчүн конструктор
    protected MyParcelableObject(Parcel in) {
        name = in.readString();
        age = in.readInt();
    }

    // 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; // көбүнесе 0
    }

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

    // Getter жана Setter
}

Салыштыруу:

Өзгөчөлүк Serializable Parcelable
Интерфейс java.io.Serializable android.os.Parcelable
Аткаруу Асыңкы, жайыраак Жылдамыраак
Колдонуу оңой Оңой (аз код) Кыйын (коп код)
Колдонуу Жалпы Java Android (IPC, Bundles, Intents)
Объект түзүү Көбүрөөк убактылуу объекттер Аз убактылуу объекттер

Parcelable Android тиркемесинин компоненттери арасында маалымат өткөрүү үчүн артыкчылыктуу.