Middle
Android-ში Serializable და Parcelable-ს შორის რა განსხვავებაა?
sobes.tech AI
პასუხი AI-სგან
მთავარი განსხვავება შესრულებასა და განხორციელების მეთოდშია.
-
Serializable:- Java SE-ის სტანდარტული ინტერფეისი.
- მარტივია განხორციელება (საკმარისია ინტერფეისის იმპლემენტაცია).
- იყენებს Java Reflection API-ს სერილიზაციისთვის, რაც ნელი და მოითხოვს მეტ მეხსიერებას.
- შესაფერისია მცირე ობიექტებისთვის ან როდესაც სერილიზაციის შესრულება კრიტიკული არ არის.
-
Parcelable:- Android SDK-ის სპეციფიკური ინტერფეისი.
- მოითხოვს პროცესის სერილიზაციის/დისერილიზაციის მკაფიო აღწერას.
- მნიშვნელოვნად სწრაფი და ეფექტური მეხსიერების გამოყენების თვალსაზრისით, რადგან არ იყენებს Reflection-ს.
- საუკეთესო არჩევანია ობიექტების გადაცემისთვის Android-ის კომპონენტებს შორის (Activity, Service, BroadcastReceiver) და მდგომარეობის შენახვისთვის.
Parcelable-ის განხორციელებისთვის საჭიროა:
- ინტერფეისის
Parcelableიმპლემენტაცია. - მეთოდის
writeToParcel()განხორციელება მონაცემების ჩაწერისთვისParcel-ში. - მეთოდის
describeContents()განხორციელება. - სტატიკური ობიექტის
CREATORშექმნა, რომელიცParcelable.Creator-ის იმპლემენტაციაა.
import android.os.Parcel;
import android.os.Parcelable;
public class MyParcelableObject implements Parcelable {
private int value;
private String name;
public MyParcelableObject(int value, String name) {
this.value = value;
this.name = name;
}
protected MyParcelableObject(Parcel in) {
value = in.readInt();
name = in.readString();
}
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;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(value);
dest.writeString(name);
}
}
შედარების სია:
| მახასიათებელი | Serializable | Parcelable |
|---|---|---|
| ბიბლიოთეკა | java.io |
android.os |
| შესრულება | დაბალი (Reflection-ით) | მაღალი |
| მეხსიერების ეფექტიანობა | დაბალი | მაღალი |
| რეალიზაცია | მარტივი | რთული |
| გამოყენება | ზოგადი Java, მცირე მონაცემები | Android, მონაცემთა გადაცემა კომპონენტებს შორის |