Junior
Mis on serialiseeritavad ja pakendatavad objektid?
sobes.tech AI
Vastus AI-lt
Serialiseeritavad objektid võivad olla muudetud baitvooguks salvestamiseks või edastamiseks, kasutades Java standardmehhanismi java.io.Serializable.
Parcelitavad objektid võivad samuti olla pakitud ja lahtipakitud, kuid kasutavad spetsialiseeritud Android-mehhanismi android.os.Parcelable. See mehhanism on tõhusam andmete edastamiseks Androidi komponentide vahel, kuna see on optimeeritud IPC (vaheprotsessiline suhtlus) jaoks.
| Omadus | Serializable |
Parcelable |
|---|---|---|
| Mehhanism | Java refleksioon | Android Parceling API |
| Tõhusus | Vähem tõhus (kasutab refleksiooni) | Tõhusam |
| Rakendamine | Lihtsam (märkme interfeiss) | Nõuab writeToParcel, createFromParcel, describeContents meetodite rakendamist |
| Kasutus | Tavaline Java rakendus, kaugmeetodite kutsed (RMI) | Spetsiaalne Android, andmete edastamine tegevuste, teenuste vahel jne. |
| Büloorplaan | Vähem koodi | Rohkem koodi |
Näide Parcelable rakendamisest:
// MyParcelableObject.java
package com.example.myapplication;
import android.os.Parcel;
import android.os.Parcelable;
public class MyParcelableObject implements Parcelable {
private String name;
private int value;
public MyParcelableObject(String name, int value) {
this.name = name;
this.value = value;
}
protected MyParcelableObject(Parcel in) {
name = in.readString();
value = in.readInt();
}
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, kui puuduvad erilised failikirjeldajad
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(value);
}
// Getterid (lühenduse jaoks jäetud välja)
}