Android Architecture Components - это набор решений от Google, которые помогут вам в разработке приложений.
Я разработал бесплатный курс по этой теме. Он охватывает следующие подтемы:
1. Activity и Fragment Lifecycle
Architecture Components предоставляют несколько механизмов, сочетание которых, позволит вам удобно обрабатывать повороты экрана.
Lifecycle - отслеживает текущий статус Activity и может уведомлять об этом своих подписчиков
LiveData - получает и хранит данные, может отправлять их своим подписчикам
ViewModel - поможет сохранить живыми необходимые для вас объекты при повороте экрана
Полезные ссылки по теме:
ViewModel и LiveData: паттерны и антипаттерны
5 common mistakes when using Architecture Components
2. База данных
Room - удобная обертка для работы с базой данных.
3. Постраничная загрузка данных
Paging Library - библиотека для постраничной загрузки данных из базы данных, с сервера или любого другого источника.
4. Data Binding
Избавит вас от написания кучи кода по работе с View. Его удобно использовать с ViewModel.
5. Navigation Architecture Component
Новый компонент для навигации по экранам приложения.
6. WorkManager
Новый механизм выполнения фоновых задач
7. Примеры использования
Обсуждать эти темы можно в нашем Telegram чате.
После теоретических уроков я планирую поразбирать интересные примеры, в которых используются эти компоненты.
Список уроков:
-
Урок 1. Lifecycle
В этом уроке рассмотрим возможности Lifecycle. Как подписаться на его события. Как узнать текущее состояние Activity.
-
Урок 2. LiveData
В этом уроке рассмотрим основные возможности LiveData. Как подписаться на его данные. Как помещать в него данные. Как он взаимодействует со своими подписчиками.
-
Урок 3. LiveData. Дополнительные возможности
В прошлом уроке мы разобрались, как отправлять и получать данные в LiveData. В этом уроке рассмотрим несколько дополнительных возможностей. Как преобразовать тип данных с помощью map. Как создать свой LiveData. Как объединить несколько LiveData в один с помощью MediatorLiveData.
-
Урок 4. ViewModel
В этом уроке рассмотрим, как использовать ViewModel. Как сохранять данные при повороте экрана. Как передать Context в ViewModel. Как передать свои данные в конструктор модели с помощью фабрики. Как передать данные между фрагментами. Что использовать: ViewModel или onSavedInstanceState.
-
Урок 5. Room. Основы
Библиотека Room предоставляет нам удобную обертку для работы с базой данных SQLite. В этом уроке рассмотрим основы. Как подключить к проекту. Как получать, вставлять, обновлять и удалять данные.
-
Урок 6. Room. Entity
В этом уроке более подробно рассмотрим возможности Entity. Как задать имя таблицы. Как задать имя или тип поля. Как создать составной или внешний ключ. Как создать индекс. Как использовать вложенные объекты.
-
Урок 7. Room. Insert, Update, Delete, Transaction
В этом уроке рассмотрим подробнее аннотации Insert, Update и Delete. А также узнаем, как использовать транзакции в Room.
-
Урок 8. Room. Query
В этом уроке поговорим подробнее про Query. В каком виде мы можем получать данные: List, массив, Cursor, LiveData. Как передавать параметры. Как получать только некоторые поля. Как с помощью Query выполнять update и delete запросы в Room.
-
Урок 9. Room. RxJava
В этом уроке рассмотрим возможность совместного использования RxJava и Room. Как получать данные в Flowable, Single и Maybe.
-
Урок 10. Room. Запрос из нескольких таблиц. Relation
В этом уроке рассмотрим, как получать данные из нескольких таблиц. А также разберемся, как использовать аннотацию Relation.
-
Урок 11. Room. Type converter
В этом уроке рассмотрим, как использовать конвертеры типов данных, чтобы Room мог сохранять не только поля-примитивы.
-
Урок 12. Room. Миграция версий базы данных
В этом уроке рассмотрим, как выполняется миграция версий базы данных в Room
-
Урок 13. Room. Тестирование
В этом уроке рассмотрим, как тестировать Room. Напишем несколько тестов для Dao и протестируем миграцию.
-
Урок 14. Paging Library. Основы
В этом уроке начнем знакомство с Paging Library. Рассмотрим общую схему работы связки PagedList и DataSource.
-
Урок 15. Paging Library. PagedList и DataSource. Placeholders.
В этом уроке рассмотрим, какие параметры мы можем задать для PagedList. Подробно разберем, какие значения необходимо передавать в callback.onResult в DataSource. Научимся использовать режим Placeholders.
-
Урок 16. Paging Library. LivePagedListBuilder. BoundaryCallback.
В этом уроке обсудим, в каких потоках выполняется код загрузки данных. Разберем возможности LivePagedListBuilder. Узнаем, как использовать Paging Library с Room.
-
Урок 17. Paging Library. Виды DataSource
В этом уроке рассмотрим, чем отличаются существующие виды DataSource: PositionalDataSource, PageKeyedDataSource, ItemKeyedDataSource
-
Урок 18. Android Data Binding. Основы
В этом уроке знакомимся с Data Binding.
-
Урок 19. Android Data Binding. Код в layout. Доступ к View
В этом уроке рассматриваем возможность написания кода в layout и получаем View от биндинга.
-
Урок 20. Android Data Binding. Обработка событий
В этом уроке рассмотрим как обрабатывать события View.
-
Урок 21. Android Data Binding. Observable поля. Двусторонний биндинг.
В этом уроке разберем, как настроить автоматическую передачу данных в View и обратно.
-
Урок 22. Android Data Binding. Adapter. Conversion.
В этом уроке разберем, как можно расширить возможности биндинга с помощью Binding Adapter и Binding Conversion.
-
Урок 23. Android Data Binding. Использование с include, ViewStub и RecyclerView.
В этом уроке рассмотрим примеры использование Android Data Binding с include, ViewStub и RecyclerView
-
Урок 24. Navigation Architecture Component. Введение
В этом уроке рассмотрим простой пример использования Navigation Architecture Component.
-
Урок 25. Navigation. Передача данных. Type-safe аргументы.
В этом уроке рассмотрим как передавать данные при навигации.
-
Урок 26. Navigation. Параметры навигации
В этом уроке разбираемся, как задавать параметры при навигации.
-
Урок 27. Navigation. NavigationUI.
В этом уроке рассмотрим интеграцию Navigation Component c Overflow Menu, Navigation Drawer и BottomNavigationView.
-
Урок 28. Navigation. Вложенный граф. Global Action. Deep Link.
В этом уроке рассмотрим вложенный граф, global action и deep link.
-
Урок 29. WorkManager. Введение
В этом уроке знакомимся с WorkManager.
-
Урок 30. WorkManager. Критерии запуска задачи.
В этом уроке задаем критери для запуска задачи.
-
Урок 31. WorkManager. Последовательность выполнения задач.
В этом уроке рассматриваем, как запускать задачи в определенном порядке
-
Урок 32. WorkManager. Передача и получение данных
В этом уроке рассмотрим как передать данные в задачу и как получить результат
-
Урок 33. Практика. О чем это будет.
В этом уроке я распишу, что будет в практических уроках.
-
Урок 34. Практика. TodoApp. Список задач.
В этом уроке разбираем экран Tasks (список задач) приложения TodoApp
-
Урок 35. Практика. TodoApp. Просмотр задачи
В этом уроке разбираем экран TaskDetail (просмотр задачи) приложения TodoApp
Курс бесплатен. Если у вас есть желание выразить благодарность, то используйте Яндекс-форму или PayPal. Спасибо!