Middle
Androidда Serializable жана Parcelable ортосунда кандай айырма бар?
sobes.tech AI
AIден жооп
Негізгі айырма өнімділік пен жүзеге асыру әдісінде.
-
Serializable:- Java SE-нің стандартты интерфейсі.
- Жеңіл жүзеге асыру (интерфейсті жүзеге асыру жеткілікті).
- Java Reflection API-ны сериализация үшін пайдаланады, бұл баяу және көп жадты талап етеді.
- Кіші объектілер немесе сериализацияның өнімділігі маңызды емес кезде қолайлы.
-
Parcelable:- Android SDK үшін арнайы интерфейс.
- Сериализация/десериализация процесін нақты сипаттауды талап етеді.
- Reflection-ке сүйенбегендіктен, айтарлықтай тезірек және тиімдірек, жадты пайдалану жағынан.
- Android компоненттері арасында объектілерді тасымалдау және күйін сақтау үшін ең жақсы таңдау.
Parcelable жүзеге асыру үшін:
Parcelableинтерфейсін жүзеге асыру.writeToParcel()әдісін жүзеге асыру, деректердіParcel-ға жазу үшін.describeContents()әдісін жүзеге асыру.CREATORстатикалық объектін құру, олParcelable.Creatorинтерфейсін жүзеге асырады.
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);
}
}
Салыстыру кестесі:
| Ерекшелік | Serializable | Parcelable |
|---|---|---|
| Кітапхана | java.io |
android.os |
| Өнімділік | Төмен (Reflection пайдаланады) | Жоғары |
| Жады тиімділігі | Төмен | Жоғары |
| Реализация | Жеңіл | Күрделірек |
| Қолданылуы | Жалпы Java, кіші деректер | Android, компоненттер арасында деректерді тасымалдау |