Middle
Тафовут байни Serializable ва Parcelable дар Android чист?
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, передача даних між компонентами |