Mi az az objektumok sorosítása és elemzése az Androidban?
sobes.tech MI
Válasz az MI-től
A sorosítás az a folyamat, amikor egy objektumot bájtfolyamba alakítunk, hogy elmentsük (például fájlban vagy adatbázisban), vagy továbbítsuk (például hálózaton keresztül).
A deszerializálás (vagy parse) ennek fordított folyamata: az objektum visszaállítása a bájtfolyamból.
Androidban erre a célra leggyakrabban a Serializable vagy a Parcelable használatos.
A Serializable (a Java szabványos interfésze): könnyen használható (csak az interfészt kell megvalósítani), de lassabb, mint a Parcelable, és sok ideiglenes objektumot hoz létre.
// Serializable példa
import java.io.Serializable;
public class MySerializableObject implements Serializable {
private static final long serialVersionUID = 1L; // Ajánlott megadni
private String name;
private int age;
public MySerializableObject(String name, int age) {
this.name = name;
this.age = age;
}
// Getterek és setterek
}
A Parcelable (Android-specifikus interfész): gyorsabb és hatékonyabb, mint a Serializable, mert IPC-re van optimalizálva. Több kódot igényel.
// Parcelable példa
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;
}
// Deserializáláshoz konstruktor
protected MyParcelableObject(Parcel in) {
name = in.readString();
age = in.readInt();
}
// Creator az objektumok létrehozásához a Parcel-ból
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; // Általában 0
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
// Getterek és setterek
}
Összehasonlítás:
| Jellemző | Serializable | Parcelable |
|---|---|---|
| Interfész | java.io.Serializable |
android.os.Parcelable |
| Teljesítmény | Lassabb | Gyorsabb |
| Könnyű használat | Egyszerűbb (kevesebb kód) | Nehezebb (több kód) |
| Használat | Általános Java | Android (IPC, Bundles, Intents) |
| Objektum létrehozás | Több ideiglenes objektum | Kevesebb ideiglenes objektum |
A Parcelable az előnyösebb az adatok átadására az Android alkalmazás komponensei között (például Intent vagy Bundle segítségével).