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)
}