Junior
Mis on objektide serialiseerimine ja parser Androidis?
sobes.tech AI
Vastus AI-lt
Serialiseerimine on protsess, kus objekt muudetakse baitvooguks, et seda saaks salvestada (näiteks faili või andmebaasi) või edastada (näiteks võrgus).
Deserialiseerimine (või parsimine) on vastupidine protsess: objekti taastamine baitvoogust.
Androidis kasutatakse selleks kõige sagedamini Serializable või Parcelable.
Serializable (Java standardliides): lihtne kasutada (piisab liidese rakendamisest), kuid aeglasem kui Parcelable ning loob palju ajutisi objekte.
// Serializable näide
import java.io.Serializable;
public class MySerializableObject implements Serializable {
private static final long serialVersionUID = 1L; // Soovitatav määrata
private String name;
private int age;
public MySerializableObject(String name, int age) {
this.name = name;
this.age = age;
}
// Getterid ja setterid
}
Parcelable (Android-spetsiifiline liides): kiirem ja tõhusam kui Serializable, kuna on optimeeritud IPC jaoks. Nõuab rohkem koodi.
// Parcelable näide
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;
}
// Deserialiseerimise konstruktor
protected MyParcelableObject(Parcel in) {
name = in.readString();
age = in.readInt();
}
// CREATOR objekti loomine
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; // tavaliselt 0
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
// Getterid ja setterid
}
Võrdlus:
| Omadus | Serializable | Parcelable |
|---|---|---|
| Liides | java.io.Serializable |
android.os.Parcelable |
| Sooritusvõime | Aeglasem | Kiirem |
| Kasutamise lihtsus | Lihtsam (vähem koodi) | Raskem (rohkem koodi) |
| Kasutus | Üldine Java | Android (IPC, Bundles, Intents) |
| Objekti loomine | Rohkem ajutisi objekte | Vähem ajutisi objekte |
Parcelable on eelistatud andmete edastamiseks Androidi rakenduse komponentide vahel (näiteks Intent või Bundle).