Ce este serializarea și analizarea obiectelor în Android?
sobes.tech AI
Răspuns de la AI
Serializarea este procesul de conversie a unui obiect într-un flux de octeți pentru stocare (de exemplu, într-un fișier sau bază de date) sau transfer (de exemplu, prin rețea).
Parsarea (sau deserializarea) este procesul invers: restaurarea unui obiect dintr-un flux de octeți.
În Android, pentru aceste scopuri, se folosesc cel mai adesea Serializable sau Parcelable.
Serializable (interfața standard Java): ușor de utilizat (trebuie doar să implementezi interfața), dar mai lent decât Parcelable și creează multe obiecte temporare.
// Exemplu Serializable
import java.io.Serializable;
public class MySerializableObject implements Serializable {
private static final long serialVersionUID = 1L; // Se recomandă specificarea
private String name;
private int age;
public MySerializableObject(String name, int age) {
this.name = name;
this.age = age;
}
// Getteri și setteri
}
Parcelable (interfață specifică Android): mai rapid și mai eficient decât Serializable, deoarece este optimizat pentru IPC (Comunicare între procese). Necesită mai mult cod.
// Exemplu Parcelable
import android.os.Parcel;
import android.os.Parcelable;
public class MyParcelableObject implements Parcelable {
private String name;
private int age;
public MyParcelableObject(String name, int age) {
this.name = name;
this.age = age;
}
// Constructor pentru deserializare
protected MyParcelableObject(Parcel in) {
name = in.readString();
age = in.readInt();
}
// Creator pentru crearea instanțelor din Parcel
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; // Pentru majoritatea obiectelor
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
// Getteri și setteri
}
Comparare:
| Caracteristică | Serializable | Parcelable |
|---|---|---|
| Interfață | java.io.Serializable |
android.os.Parcelable |
| Performanță | Mai lent | Mai rapid |
| Ușurință în utilizare | Mai ușor (mai puțin cod) | Mai dificil (mai mult cod) |
| Utilizare | Java general | Android (IPC, Bundles, Intents) |
| Crearea obiectelor | Mai multe obiecte temporare | Mai puține obiecte temporare |
Parcelable este preferat pentru transferul de date între componentele Android (de exemplu, prin Intent sau Bundle).