Middle
Kāda ir atšķirība starp Serializable un Parcelable Android?
sobes.tech AI
Atbilde no AI
Galvenā atšķirība ir veiktspēja un realizācijas veids.
-
Serializable:- Standarta Java SE saskarne.
- Vienkāršāka realizācija (vienkārši jāimplementē saskarne).
- Izmanto Java Reflection API serializācijai, kas ir lēnāka un prasa vairāk atmiņas.
- Piemērots mazām objektiem vai kad serializācijas veiktspēja nav kritiska.
-
Parcelable:- Specifiska Android SDK saskarne.
- Prasa skaidru serializācijas/deserializācijas procesa aprakstu.
- Krietni ātrāka un efektīvāka atmiņas izmantošanā, jo nepaļaujas uz Reflection.
- Labāka izvēle datu pārsūtīšanai starp Android komponentiem (Activity, Service, BroadcastReceiver) un stāvokļa saglabāšanai.
Lai realizētu Parcelable, nepieciešams:
- Implementēt
Parcelablesaskarni. - Implementēt
writeToParcel()metodi datu ierakstīšanaiParcel. - Implementēt
describeContents()metodi. - Izveidot statisku
CREATORobjektu, kas irParcelable.Creatorrealizācija.
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);
}
}
Salīdzināšanas tabula:
| Raksturlielums | Serializable | Parcelable |
|---|---|---|
| Bibliotēka | java.io |
android.os |
| Veiktspēja | Zema (izmanto Reflection) | Augsta |
| Atmiņas efektivitāte | Zema | Augsta |
| Realizācija | Vienkārša | Sarežģītāka |
| Lietošana | Vispārīga Java, mazāk dati | Android, datu pārsūtīšana starp komponentiem |