Google выпустила стабильную версию 1.0 своих компонентов архитектуры Android. Это набор библиотек, которые, по словам Google, помогут вам разрабатывать надежные, тестируемые и обслуживаемые приложения.
Компоненты архитектуры предназначены для того, чтобы помочь вашим приложениям справиться с агрессивным управлением ресурсами ОС Android. Агрессивное управление ресурсами позволяет ОС Android работать на таком большом количестве устройств, но при этом затрудняет создание надежных приложений.
Когда Google запустил компоненты архитектуры Android на Google I / O, Майк Джеймс сомневался в их полезности, сказав:
«В неспокойные времена в мире Android сейчас, вероятно, не время для архитектурной библиотеки и, конечно же, не для недостаточно развитой и, вероятно, нехватки ресурсов».
Более оптимистичный анализ компонентов можно увидеть в этом видео от Google:
Компоненты архитектуры состоят из библиотек для общих задач, таких как управление жизненным циклом и сохранение данных, чтобы помочь разработчикам писать модульные приложения с меньшим количеством шаблонного кода.
Две библиотеки компонентов — Room и Lifecyle — теперь запущены в стабильной версии 1.0.
Room — это библиотека сопоставления объектов SQLite, которую можно использовать для преобразования данных таблицы SQLite в объекты Java. Он обеспечивает проверки во время компиляции операторов SQLite и может возвращать наблюдаемые RxJava, Flowable и LiveData.
Комната состоит из трех основных компонентов — базы данных, сущности и DAO. База данных содержит держатель базы данных и служит основной точкой доступа для базового подключения к постоянным реляционным данным вашего приложения. Сущность представляет собой таблицу в базе данных, а DAO содержит методы, используемые для доступа к базе данных.
Библиотека жизненного цикла предоставляет инструменты для управления состоянием компонентов. Его можно использовать для создания компонентов с учетом жизненного цикла, которые управляют своими собственными жизненными циклами, снижая вероятность утечек или сбоев. Библиотека предоставляет классы и интерфейсы, которые позволяют создавать компоненты, которые могут автоматически настраивать свое поведение в зависимости от текущего состояния жизненного цикла действия или фрагмента.
Жизненные циклы теперь также интегрированы с библиотекой поддержки, поэтому вы можете использовать их со стандартными классами, такими как AppCompatActivity.
Библиотека жизненного цикла является основой для других компонентов архитектуры, таких как LiveData, которая является наблюдаемой с учетом жизненного цикла, которая хранит данные и предоставляет обновления. Библиотека жизненного цикла также является основой ViewModel, которая отделяет владение данными и логикой представления от связанных с жизненным циклом сущностей, таких как Activity и Fragments.
Другие компоненты архитектуры станут доступны в ближайшие месяцы, вероятно, начиная с PagedList (который в настоящее время находится в альфа-версии). Это разработано для лучшей обработки больших наборов данных.