Sobes.tech
Junior

Serializatsiya qilinadigan va parcelash mumkin bo'lgan obyektlar nima?

sobes.tech AI

AIdan javob

Serializab bo'ladigan obyektlar saqlash yoki uzatish uchun Java standarti java.io.Serializable mexanizmi yordamida bayt oqimiga aylantirilishi mumkin.

Parcel qilinadigan obyektlar ham paketlash va ochish mumkin, ammo ular Androidning maxsus android.os.Parcelable mexanizmini ishlatadi. Bu mexanizm Android komponentlari o'rtasida ma'lumotlarni uzatishda yanada samaraliroq, chunki u IPC (Jarayonlararo Aloqa) uchun optimallashtirilgan.

Xususiyat Serializable Parcelable
Mexanizm Java refleksiya Android Parceling API
Ishlash tezligi Kamroq samarali (refleksiya ishlatadi) Ko'proq samarali
Amalga oshirish Oddiyroq (belgilovchi interfeys) writeToParcel, createFromParcel, describeContents metodlarini amalga oshirishni talab qiladi
Foydalanish Standart Java ilovasi, RMI chaqiriqlari Android uchun maxsus, faoliyatlar, xizmatlar va boshqalar o'rtasida ma'lumot uzatish uchun
Namuna Kamroq kod bilan Ko'proq kod bilan

Parcelable ni amalga oshirish misoli:

// 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; // Odatiy 0, agar maxsus fayl descriptorlari bo'lmasa
    }

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

    // Getterlar ( qisqargan uchun o'chirilgan)
}