Junior
რა არის სერიული და პაკეტირებადი ობიექტები?
sobes.tech AI
პასუხი AI-სგან
සීරියල් කළ හැකි වස්තු Java java.io.Serializable මැකනිස්මය භාවිතා කරමින් බයිට් තහඩුවකට පරිවර්තනය කළ හැකිය.
පාර්සල් කළ හැකි වස්තුද අගුලු දමා, විවෘත කළ හැකි අතර, Android android.os.Parcelable යන විශේෂිත මැකනිස්මය භාවිතා කරයි. මෙම මැකනිස්මය Android කොම්පෝනන්ට් අතර දත්ත මාරු කිරීම සඳහා වැඩි කාර්යක්ෂම වේ, එය IPC (Inter-Process Communication) සඳහා අනුකූල වේ.
| විශේෂාංගය | Serializable |
Parcelable |
|---|---|---|
| මැකනිස්මය | Java ප්රතිච්ඡේදනය | Android Parceling API |
| කාර්යක්ෂමතාව | අඩු කාර්යක්ෂම (ප්රතිච්ඡේදනය භාවිතා කරයි) | වැඩි කාර්යක්ෂම |
| අම්ලිකරණය | සරල (සංකේතක අතුරුමුහුණත) | writeToParcel, createFromParcel, describeContents ක්රම අනුගමනය කළ යුතුයි |
| භාවිතය | සාමාන්ය Java යෙදුම, දුරස්ථ ක්රියාවන් (RMI) | Android සඳහා විශේෂිත, ක්රියාකාරකම්, සේවකයන් අතර දත්ත මාරු කිරීම සඳහා |
| බොයිලර්ප්ලේට් | කේත අඩුයි | කේත වැඩියි |
Parcelable ක්රියාවලියට උදාහරණයක්:
// 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; // සාමාන්යයෙන් 0, විශේෂ ගොනු විස්තරකරු නොමැති නම්
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(value);
}
// ගේටර් (සංක්ෂිප්ත කිරීම සඳහා අතුරුදන්)
}