Подтвердить что ты не робот

Какая разница между Parcelable и Serialization, используемыми в android

Я хочу знать точную,

  • Должен ли я использовать технику parcelable или serialization для отправки данных из одной активности в другую?
  • является обязательным использовать один из них для отправки данных от одного к другому?
  • Когда я должен их использовать?
  • и точная разница между ними и производительностью обоих из них в аспектах java.

Спасибо заранее.


 public class GetSetClass implements Serializable {
    private int dt = 10;

    /** pass any object, drwabale */
    public int getDt() {
        return dt;
    }

    public void setDt(int dt) {
        this.dt = dt;
    }
}
4b9b3361

Ответ 1

следует ли использовать метод разбора или сериализации для отправки данных из одной активности в другую.

Если вы отправляете не-примитивный тип данных/объект в другое действие через intent, вам нужно либо Serialize, либо реализовать Parcelable для этого объекта. Предпочтительный метод Parcelable, поскольку он не влияет на производительность.

Обязательно использовать один из них для отправки данных от одного к другому./Когда я должен их использовать.

Он является обязательным/используется для отправки объектов данных не примитивного типа.

и точная разница между ними и производительность обоих из них в java-аспектах.

Сериализация влияет на производительность. Для получения дополнительной информации проверьте эту ссылку Android Parcelable и Serializable

Ответ 2

Эти понятия связаны с Inter Process Communication (IPC).

При отправке данных между двумя приложениями мы должны убедиться, что оба приложения должны понимать формат отправляемых данных.

Особенно, когда вы отправляете не примитивные значения типа данных, такие как классы и объекты между двумя приложениями, мы должны преобразовать их в понятный формат операционной системы. O.S понимает только примитивные типы (ints, chars и т.д.). Причина преобразования заключается в том, что мы должны использовать канал связи O.S для передачи данных.

Этот процесс преобразования не примитивных типов в примитивы и отправка другим приложениям по некоторому каналу связи называется Serialization. Обратный процесс называется De Сериализация.

В Java IPC сильно зависит от Serializables для сериализации. Но сериализация спроектирована с учетом настольных приложений. Когда вы выполняете IPC в мобильных приложениях, мы должны убедиться, что процесс IPC не слишком тяжелый.

Простыми словами сериализация представляет собой тяжелую концепцию для IPC. Таким образом, вместо Serialization Android выбрал Binders для достижения облегченного взаимодействия между процессами. Связывание внутри страны сильно зависит от посылок, чтобы сделать IPC. Посылки представляют собой сериализуемые материалы с малым весом. Предпочтительно использовать посылки для маршалинга объектов в потоки байтов.

Примечание. Связующий IPC сильно зависит от концепции общей памяти, чтобы убедиться, что при совместном использовании приложений не так много дублирования данных.

Ответ 3

Получено очень хорошее объяснение различий между Parcelable и Serialization.

Чтобы начать с вашего вопроса, хотя он был долгое время, он может помочь другим:

  • Должен ли я использовать метод разбора или сериализации для отправки данных из одной активности в другую?

Ans: Parcelable - лучший выбор (почему объяснено позже).

  1. Обязательно ли использовать один из них для отправки данных от одного к другому?

Ans: Да, поскольку отправка данных (объектов) из одного в другой требует, чтобы потоки байтов записывались и извлекались, и это можно сделать либо путем произвольной, либо сериализации.

  1. Когда я должен их использовать?

Ans: Эта часть, на которую вы ответили, например, передавая данные из одной активности в другую.

  1. и точная разница между ними и производительность обоих из них в java-аспектах.

Ans: 1. Parcelable хорошо документирован в Android SDK; сериализация, с другой стороны, доступна на Java.

  1. В Parcelable разработчики пишут специальный код для маршалинга и размаширования, поэтому он создает меньше мусорных объектов по сравнению с Serialization. Из-за этой пользовательской реализации производительность Parcelable over Serialization значительно улучшается (примерно в два раза быстрее).

  2. Сериализация - это интерфейс маркера, который подразумевает, что пользователь не может сортировать данные в соответствии с их требованиями. В Сериализации операция маршалинга выполняется на виртуальной машине Java (JVM) с использованием API отражения Java. Это помогает идентифицировать элемент и поведение объектов Java, но также приводит к созданию большого количества объектов мусора. В связи с этим процесс сериализации медленный по сравнению с Parcelable.

Ответ от: эта ссылка

См. также: объяснение сериализации

Ответ 4

Java Serializable: - Serializable поставляется со стандартной Java и намного проще реализовать все, что вам нужно сделать, это реализовать интерфейс Serializable и добавить переопределить два метода.
Проблема с Serializable заключается в том, что он пытается соответствующим образом обрабатывать все под солнцем и использует много отражений, чтобы определить типы, которые сериализуются. Таким образом, он становится мудрым объектом. Androids Parcelable: - Android Inter-Process Communication (AIPC), чтобы сообщить Android, как это должно быть маршалировать и развязать ваш объект. Он менее общий и не использует отражение, поэтому он должен иметь гораздо меньше накладных расходов и быть намного быстрее.

Подробнее из http://www.3pillarglobal.com/blog/parcelable-vs-java-serialization-android-app-development

Ответ 5

как частизация, так и сериализация - это способы сортировки и отмены данных. в android это используется для передачи не-примитивных типов данных между компонентами и процессами. в общем, андроид допускает сериализуемые или разборчивые объекты, поэтому вы можете выбрать свой метод. исключение - с интерфейсами AIDL. объекты должны быть переданы/возвращены.

Сериализация

использует отражение для автоматического сортировки и отмены данных. в большинстве случаев реализация интерфейса маркера достаточно, чтобы заставить его работать. с рассылкой, вы должны написать код для маршаллинга и развязывания данных самостоятельно.

и, следовательно, поэтому рассылка выполняется быстрее. объект не нужно отражать, чтобы обнаружить поля. это отражение, которое делает его медленным.

Сериализация

также имеет встроенное управление версиями... если вы попытаетесь развязать другую версию класса объектов, которая была распределена, процесс будет непредсказуемым. с пакетом, вы можете сделать то же самое, но вам нужно реализовать его самостоятельно, добавив "поле версии к вашему объекту и код, который проверяет версию, когда unmarhsaling.

что, как говорится, я обычно использую сериализацию. с простыми объектами вы не заметите разницы. вы всегда можете изменить, чтобы использовать парцеллу позже в разработке, если обнаружите проблемы с производительностью.