Middle
Ի՞նչ տարբերություն կա Serializable և Parcelable-ի միջև Android-ում։
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, տվյալների փոխանցում կոմպոնենտների միջև |