Sobes.tech
Junior

Serializasiya edilə bilən və paketlənə bilən obyektlər nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Seriyalaşdırıla bilən obyektlər saxlama və ya ötürmə üçün standart Java java.io.Serializable mexanizmi istifadə edilərək bayt axınına çevrilə bilər.

Parcel edilə bilən obyektlər də paketlənə və açılır, lakin Android-in xüsusi android.os.Parcelable mexanizmini istifadə edir. Bu mexanizm Android komponentləri arasında məlumatların ötürülməsi üçün daha səmərəlidir, çünki IPC (Proseslərarası Əlaqə) üçün optimallaşdırılmışdır.

Xüsusiyyət Serializable Parcelable
Mexanizm Java refleksiyası Android Parceling API
Performans Daha az səmərəli (refleksiya istifadə edir) Daha səmərəli
İcrası Daha sadə (işarəçi interfeys) writeToParcel, createFromParcel, describeContents metodlarının icrası tələb olunur
İstifadə Standart Java tətbiqi, RMI çağırışları Android üçün xüsusi, fəaliyyətlər və xidmətlər arasında məlumat ötürülməsi
Nümunə Daha az kod ilə Daha çox kod ilə

Parcelable-in tətbiqi nümunəsi:

// MyParcelableObject.java
package com.example.myapplication;

import android.os.Parcel;
import android.os.Parcelable;

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

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

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

    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; // Adətən 0, xüsusi fayl deskriptorları yoxdursa
    }

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

    // Getterlər (qısaldılmışdır)
}