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