Логика приложения
Помимо пользовательского интерфейса любое мобильное приложение содержит логику работы (еще называют бизнес логикой), например:
- Обращения к серверу для получения данных
- Локальное хранение данных
- Валидация форм ввода
- Обращение к системным API для интеграции - получение фото, видео и подобное
- Алгоритмы рассчитывающие некие данные на основе ввода пользователя
- ...
Логику приложения принято отделять от пользовательского интерфейса, чтобы была понятная зона ответственности каждого блока кода. Для разделения логики и UI требуется решение для их взаимодействия, ведь совсем независимо они не могут быть.
Ознакомимся с современными подходами построения логики приложений по материалам Google. Обязательно в конце проверь себя пройдя небольшой тест.
ViewModel
Ознакомиться детальнее с ViewModel и LiveData помогут следующие материалы:
- Единый стейт экрана - статья о состояних и событиях
- Android Kotlin Fundamentals: 5.1 ViewModel - не пропуская Summary и тест в Homework
- Android Kotlin Fundamentals: LiveData and LiveData observers - не пропуская Summary и тест в Homework
- Incorporate Lifecycle-Aware Components - для закрепления связей жизненного цикла android компонентов и ViewModel, LiveData
Retrofit
Практически все приложения выполняют работу с сетью. Основной способ выполнения сетевых запросов в Android это библиотека Retrofit.
CodeLab Get data from the internet даст более детальное представление о библиотеке и как её использовать.
Coroutines
В CodeLab Get data from the internet для выполнения асинхронной задачи (обращения к серверу) использовались kotlinx.coroutines. Это популярная библиотека для выполнения асинхронных и многопоточных задач.
Свое знакомство с Coroutines начните с изучения раздела документации coroutines basics, а затем выполните Hands On Introduction to Coroutines and Channels.
В дальнейшем (вне текущего курса) для изучения coroutines используйте подборку материалов из базы знаний.
Dependency Injection
Разные классы приложения должны между собой связываться. Чтобы связанность классов не стала слишком жесткой, что усложнит поддержку кода, используют паттерн Dependency Injection.
Подробнее позволит разобраться статья Dependency Injection и CodeLab Using Hilt in your Android app.