Junior
Сериализатсия ва парсинг объектҳо дар Android чӣ аст?
sobes.tech AI
Ҷавоб аз AI
سریالیزیشن فرآیند تبدیل یک شیء به جریان بایتها برای ذخیرهسازی (مثلاً در فایل یا پایگاه داده) یا انتقال (مثلاً از طریق شبکه) است.
پارسینگ (یا deserialization) فرآیند معکوس است: بازیابی شیء از جریان بایتها.
در Android، اغلب برای این اهداف از Serializable یا Parcelable استفاده میشود.
Serializable (رابط استاندارد جاوا): آسان برای استفاده (فقط نیاز به پیادهسازی رابط است)، اما کندتر از Parcelable است و اشیاء موقت زیادی ایجاد میکند.
// نمونهای از Serializable
import java.io.Serializable;
public class MySerializableObject implements Serializable {
private static final long serialVersionUID = 1L; // توصیه میشود مشخص شود
private String name;
private int age;
public MySerializableObject(String name, int age) {
this.name = name;
this.age = age;
}
// getter و setter
}
Parcelable (رابط خاص Android): سریعتر و کارآمدتر از Serializable است، زیرا برای IPC (ارتباط بین فرآیندها) بهینهسازی شده است. نیاز به کد بیشتری برای پیادهسازی دارد.
// نمونهای از 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;
}
// سازنده برای deserialization
protected MyParcelableObject(Parcel in) {
name = in.readString();
age = in.readInt();
}
// سازنده برای ایجاد نمونهها از 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; // همیشه 0
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
// getter و setter
}
مقایسه:
| ویژگی | Serializable | Parcelable |
|---|---|---|
| رابط | java.io.Serializable |
android.os.Parcelable |
| عملکرد | کندتر | سریعتر |
| سهولت استفاده | آسانتر (کد کمتر) | سختتر (کد بیشتر) |
| کاربرد | جاوا عمومی | اندروید (IPC، Bundles، Intents) |
| ساخت اشیاء | اشیاء موقت بیشتر | اشیاء موقت کمتر |
Parcelable برای انتقال دادهها بین اجزای برنامههای اندروید (مثلاً از طریق Intent یا Bundle) ترجیح داده میشود.