Qu'est-ce que la sérialisation et l'analyse d'objets dans Android?
sobes.tech IA
Réponse de l'IA
La sérialisation est le processus de transformation d'un objet en un flux de bytes pour le stockage (par exemple, dans un fichier ou une base de données) ou la transmission (par exemple, via un réseau).
Le parsing (ou désérialisation) est le processus inverse : restaurer un objet à partir d'un flux de bytes.
Sur Android, à ces fins, on utilise le plus souvent Serializable ou Parcelable.
Serializable (interface standard Java) : facile à utiliser (il suffit d'implémenter l'interface), mais plus lent que Parcelable et crée beaucoup d'objets temporaires.
// Exemple Serializable
import java.io.Serializable;
public class MySerializableObject implements Serializable {
private static final long serialVersionUID = 1L; // Il est recommandé de spécifier
private String name;
private int age;
public MySerializableObject(String name, int age) {
this.name = name;
this.age = age;
}
// Getters et setters
}
Parcelable (interface spécifique à Android) : plus rapide et plus efficace que Serializable, car optimisé pour IPC (Communication Inter-Processus). Nécessite plus de code pour l'implémentation.
// Exemple 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;
}
// Constructeur pour désérialisation
protected MyParcelableObject(Parcel in) {
name = in.readString();
age = in.readInt();
}
// Créateur pour créer des instances à partir de 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; // Toujours 0 pour la plupart des objets
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
// Getters et setters
}
Comparaison :
| Fonctionnalité | Serializable | Parcelable |
|---|---|---|
| Interface | java.io.Serializable |
android.os.Parcelable |
| Performance | Plus lent | Plus rapide |
| Facilité d'utilisation | Plus facile (moins de code) | Plus difficile (plus de code) |
| Usage | Java général | Android (IPC, Bundles, Intents) |
| Création d'objets | Plus d'objets temporaires | Moins d'objets temporaires |
Parcelable est préféré pour le transfert de données entre composants d'une application Android (par exemple, via Intent ou Bundle).