Wat is serialisatie en parsing van objecten in Android?
sobes.tech AI
Antwoord van AI
Serialisatie is het proces waarbij een object wordt omgezet in een stroom van bytes voor opslag (bijvoorbeeld in een bestand of database) of overdracht (bijvoorbeeld via het netwerk).
Parsing (of deserialisatie) is het tegenovergestelde proces: het herstellen van een object uit een byte-stroom.
In Android worden hiervoor meestal Serializable of Parcelable gebruikt.
Serializable (standaard Java-interface): gemakkelijk te gebruiken (alleen de interface implementeren), maar langzamer dan Parcelable en creëert veel tijdelijke objecten.
// Voorbeeld Serializable
import java.io.Serializable;
public class MySerializableObject implements Serializable {
private static final long serialVersionUID = 1L; // Aanbevolen om te specificeren
private String name;
private int age;
public MySerializableObject(String name, int age) {
this.name = name;
this.age = age;
}
// Getters en setters
}
Parcelable (Android-specifieke interface): sneller en efficiënter dan Serializable, omdat het geoptimaliseerd is voor IPC (Inter-Process Communication). Vereist meer code.
// Voorbeeld 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 voor deserialisatie
protected MyParcelableObject(Parcel in) {
name = in.readString();
age = in.readInt();
}
// Creator voor het maken van instanties uit 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; // Altijd 0 voor de meeste objecten
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
// Getters en setters
}
Vergelijking:
| Functie | Serializable | Parcelable |
|---|---|---|
| Interface | java.io.Serializable |
android.os.Parcelable |
| Prestaties | Langzamer | Sneller |
| Gebruiksgemak | Gemakkelijk (minder code) | Moeilijker (meer code) |
| Gebruik | Algemeen Java | Android (IPC, Bundles, Intents) |
| Objectcreatie | Meer tijdelijke objecten | Minder tijdelijke objecten |
Parcelable is de voorkeur voor het overdragen van gegevens tussen Android-componenten (bijvoorbeeld via Intent of Bundle).