Когда система получает собственные компоненты архитектуры, это признак зрелости? Все зависит от того, как на это смотреть.
Компоненты архитектуры появляются, когда у разработчиков системы есть достаточно времени, чтобы попытаться абстрагироваться от задач более крупного и более высокого уровня, которые приходится решать почти каждому приложению. Похоже, настало время Android. Предварительный просмотр компонентов архитектуры был объявлен на Google I / O, но по большей части остался незамеченным.
В этой предварительной версии решены две проблемы:
Автоматически управляйте своей деятельностью и жизненными циклами фрагментов, чтобы избежать утечек памяти и ресурсов
Сохранение объектов данных Java в базе данных SQLite
Большая проблема с большинством библиотек компонентов, в названии которых есть слово «архитектура», заключается в том, чтобы понять, что именно они делают. Например:
«Новые компоненты, учитывающие жизненный цикл, предоставляют конструкции для привязки основных компонентов ваших приложений к событиям жизненного цикла, удаляя явные пути зависимостей».
Если вы уже знаете, что это означает, вы, вероятно, задаетесь вопросом, почему у кого-то могут возникнуть проблемы с этим. Проблема в том, что управление состоянием Android до смешного сложно, и вам не нужно далеко ходить, чтобы найти довольно известные приложения, которые ошибаются.
В идеальном мире операционная система решила бы скрыть весь жизненный цикл. Нет особых оправданий тому, что операционная система не позаботится обо всем этом и оставит программиста приложений с фикцией, что их приложение — единственное, которое работает и никогда не загружается. В конце концов, именно так настольный компьютер работал долгое время, а мобильное оборудование с каждым днем становится все мощнее.
Внимательно посмотрите на то, что предлагается. Кажется, что у нас есть класс наблюдателя, который немного упрощает работу с различными состояниями жизненного цикла за счет изучения еще одного уровня программного обеспечения. Это позволяет вам избежать кодирования того, что происходит с вашим компонентом, в соответствующих обработчиках событий Activity или Fragment. Вместо этого ваш компонент может просто наблюдать за изменениями состояния и автоматически вызывать собственные «обработчики событий».
Вы можете использовать это для создания компонентов с учетом жизненного цикла. Например, есть класс ViewModel, в котором хранятся данные, относящиеся к пользовательскому интерфейсу, чтобы он выдерживал изменения состояния, такие как поворот экрана. По сути, это более сложное решение проблемы, чем базовое onSaveInstanceState и подобные. ViewModel переживает Activity и Fragment и, таким образом, обеспечивает постоянное хранилище. Когда Activity / Fragment воссоздается, он получает тот же экземпляр ViewModel. Существует также класс LiveData, который в основном сохраняет данные актуальными только тогда, когда есть активный наблюдатель, то есть когда какой-то компонент работает и использует данные.
Вторая цель — обеспечить более общую устойчивость данных:
Компоненты архитектуры Android также упрощают сохранение данных с помощью библиотеки Room. Room предоставляет уровень абстракции объектного сопоставления, который обеспечивает свободный доступ к базе данных, используя всю мощь SQLite.
Идея состоит в том, что вы аннотируете объект данных Java, создаете для него базу данных и определяете класс DAO с необходимым SQL для доступа и изменения базы данных:
Вы можете узнать больше из промо-видео и множества документации, за которой не так-то просто следовать:
Итак, буду ли я использовать компоненты архитектуры?
Нет.
Причина в том, что это только предварительный просмотр и могут быть изменены, возможно, большие изменения. Я планирую следить за этим и посмотреть, что произойдет.
Существует также небольшая проблема, заключающаяся в том, что он не обеспечивает привязки данных и не предлагает никакой помощи в использовании его с библиотекой привязки данных, что потенциально является гораздо более важным событием в программировании Android — даже если кажется, что он падает. на обочине.
Затем, конечно же, есть Kotlin, который все меняет.
Вы можете использовать компоненты архитектуры из Kotlin, но, вероятно, будет проще и лучше дождаться версии Kotlin — если она когда-либо будет.
В неспокойные времена в мире Android сейчас, вероятно, не время для архитектурной библиотеки и, конечно, не для недостаточно развитой и, вероятно, нехватки ресурсов.