Middle
Android-də Serializable və Parcelable arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Əsas fərq performans və tətbiq üsulunda olur.
-
Serializable:- Java SE-nin standart interfeysidir.
- Daha sadə tətbiq olunur (yalnız interfeysi tətbiq etmək kifayətdir).
- Java Reflection API istifadə edir serializasiya üçün, bu isə daha yavaşdır və daha çox yaddaş tələb edir.
- Kiçik obyektlər və ya serializasiyanın performansı kritik deyilsə uyğundur.
-
Parcelable:- Android SDK üçün xüsusi interfeys.
- Serializasiya/deserializasiya prosesinin açıq şəkildə təsviri tələb olunur.
- Reflection-a əsaslanmadığı üçün çox daha sürətli və yaddaşdan daha səmərəli istifadə edir.
- Android-da obyektləri komponentlər arasında ötürmək (Activity, Service, BroadcastReceiver) və vəziyyəti saxlamaq üçün ən yaxşı seçim.
Parcelable-i tətbiq etmək üçün:
Parcelableinterfeysini tətbiq et.writeToParcel()metodunu, məlumatlarıParcel-a yazmaq üçün tətbiq et.describeContents()metodunu tətbiq et.- Statik
CREATORobyektini yarad, buParcelable.Creator-in tətbiqidir.
import android.os.Parcel;
import android.os.Parcelable;
public class MyParcelableObject implements Parcelable {
private int value;
private String name;
public MyParcelableObject(int value, String name) {
this.value = value;
this.name = name;
}
protected MyParcelableObject(Parcel in) {
value = in.readInt();
name = in.readString();
}
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;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(value);
dest.writeString(name);
}
}
Cədvəl müqayisəsi:
| Xüsusiyyət | Serializable | Parcelable |
|---|---|---|
| Kitabxana | java.io |
android.os |
| Performans | Aşağı (Reflection istifadə edir) | Yüksək |
| Yaddaş səmərəliliyi | Aşağı | Yüksək |
| Tətbiq | Daha sadə | Daha mürəkkəb |
| İstifadə | Ümumi Java, kiçik məlumatlar | Android, komponentlər arasında məlumat ötürülməsi |