Назад к вопросам
Junior
147
questionbank

Что такое сериализация?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Сериализация — это процесс преобразования объекта в последовательность байтов для его сохранения или передачи. Десериализация — обратный процесс: восстановление объекта из этой последовательности.

В Android часто используется для:

  • Передачи данных между Activity/Fragment через Intent (реализация Parcelable).
  • Сохранения состояния пользовательского интерфейса.
  • Хранения данных в SharedPreferences или файлах.
  • Передачи данных по сети (например, JSON, Protobuf).

Основные механизмы в Android:

  • Serializable: Стандартный Java-интерфейс. Простой в реализации, но медленнее и создает больше мусора по сравнению с Parcelable. Использует рефлексию.
  • Parcelable: Android-специфичный интерфейс. Быстрее и эффективнее для межпроцессного взаимодействия (IPC). Требует ручной реализации методов writeToParcel() и createFromParcel().
  • JSON/XML: Для передачи данных по сети. Требуют библиотек для парсинга (например, GSON, Jackson, Moshi).

Пример использования Parcelable:

@Parcelize
data class User(val id: Int, val name: String) : Parcelable

(используя @Parcelize плагин Kotlin)

Пример использования Serializable:

public class Product implements Serializable {
    private int id;
    private String name;

    public Product(int id, String name) {
        this.id = id;
        this.name = name;
    }

    // геттеры и сеттеры
}

Выбор между Serializable и Parcelable зависит от задачи. Для IPC предпочтительнее Parcelable. Для сохранения объектов на диск или передачи по сети часто используют JSON/XML. Serializable удобен для простых случаев, но имеет недостатки в производительности.