Главная » Разработка для Android » СЕРИАЛИЗАЦИЯ – Android

0

 

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

Точный принцип сериализации данных зависит от той причины, по которой проводится сериализация. Например, данные, сериализуемые для передачи по сети, бывает невозможно считывать, пока они в пути. С другой стороны, информация, сериализуемая для хранения в базе данных, будет гораздо полезнее, если ее представление допускает SQL-запросы, которые легко составлять и понимать. В первом случае формат сериализации может быть двоичным. Во втором случае это, вероятно, будет аннотированный текст (labeled text).

В среде Android существует четыре распространенных варианта использования сериализации.

Управление жизненным циклом – в отличие от более крупных устройств, например ноутбуков и настольных компьютеров, устройство Android, как правило, не позволяет оперативно переместить приложение во вспомогательный своп-файл памяти, когда это приложение становится неактивным. В такой ситуации фреймворк предоставляет объект, называемый Bundl е. Когда работа приложения приостанавливается, оно записывает свое состояние в Bundle. При восстановлении приложения фреймворк Android гарантирует предоставление копии того же Bundl е в ходе инициализации. Приложение должно быть способно сериализовать все данные, которые ему необходимо сохранить на время приостановления работы, и уметь сохранить сериализованную версию данных в Bundlе.

Долговременное хранение – кроме непосредственного состояния приложения, хранимого в Bundle, большинство программ также управляет тем или иным долговременным хранилищем данных. Обычно в качестве такого хранилища выступает база данных SQLite, обернутая в ContentProvider. Приложения должны преобразовывать состояния внутрисистемного представления данных объекта и представления этих же объектов в базе данных. В крупных системах такой процесс называется объектно-реляционным отображением (ORM, object-relational mapping). Эта технология поддерживается такими фреймворками, как Hibernate и iBATIS. Локальное хранилище данных Android построено проще, к тому же оно легковеснее.

Локальная межпроцессная коммуникация – во фреймворке Android пропагандируется архитектура, при которой крупные монолитные приложения подразделяются на более мелкие компоненты: пользовательские интерфейсы, поставщики содержимого и сервисы (службы). Эти компоненты не имеют доступа к пространству друг друга, занимаемому в памяти, и, передавая информацию друг другу, должны посылать ее через границы процессов в виде сериализованных сообщений. Для этого в Android есть отлично приспособленный инструмент – язык AIDL.

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

В следующих подразделах описываются различные классы, предоставляемые для достижения этих целей.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии