В этом уроке я распишу, что будет в практических уроках.
Начинаем разборы практических примеров. Для начала распишу свое видение подачи материала.
Я буду брать интересные примеры на гитхабе и разбирать их. При этом я не собираюсь просто идти по коду и объяснять его смысл, т.к. это малоинформативно и скучно. Нам ведь не особо интересно, что делает весь код приложения. Его там очень много. Гораздо больше нас интересует, как реализовать ту или иную функцию приложения: загрузка и отображение данных, редактирование, удаление, фильтры и прочее. Поэтому я буду идти не от кода, а от функционала.
Т.е. основной стиль изложения таков: я буду рассматривать не “какую функцию реализует этот код”, а “какой код нужен, чтобы реализовать эту функцию”. Мне кажется, это будет гораздо более интересно и полезно для тех, кто еще не пришел к какому-то своему стилю написания приложений. Да и те, кто уже выработал свой стиль, могут найти что-то полезное.
Достаточно сложно будет найти баланс между объемом урока и подробностью объяснений. Т.е. если объяснять все досконально, то урок получится огромным. Если же ничего не объяснять, то урок может получиться непонятным и трудным для начинающих.
Я думаю, что я все-таки буду склоняться к минимуму объяснений и рассмотрению только самого важного. Поэтому будьте готовы самостоятельно смотреть некоторые участки кода и разбираться в них. Это очень полезный навык, который вам еще пригодится. Есть ведь известный факт, что программист гораздо больше времени читает код, чем пишет.
Architecture Components
Т.к. этот курс по теме Android Architecture Components, то и в примерах я буду разбирать только эту тему с уклоном в архитектуру приложения. Я не буду останавливаться на таких вещах, как, например, Navigation Drawer или работа с Retrofit.
Какие знания от вас потребуются
Предполагается, что вы прошли предыдущие уроки этого курса и знаете, что такое Lifecycle, LiveData, ViewModel, Data Binding и прочее из Android Architecture Components. Но даже если что-то забыли, всегда cможете посмотреть. Я, например, при разборе кода сам частенько подглядывал в свои прошлые уроки, чтобы вспомнить нюансы.
Если вы не используете MVP, MVVM или еще какой-нить MV*, то поначалу вам будет непривычно. Это, пожалуй, один из самых непростых этапов в эволюции Android разработчика - вылезти из Activity в презентер или ViewModel. Но через это надо пройти, если хотите расти дальше. Так сейчас пишут приложения.
Best practice
Важно понимать, что рассматриваемый код - это вовсе не единственный и не самый оптимальный путь. Рассматривайте его, как сборник полезных и интересных идей и решений. К тому же, в этих примерах могут встречаться ошибки и недоработки. Если вы видите, что можно сделать лучше, правильнее или удобнее - делайте так, как вам кажется правильным.
План урока
Чаще всего урок будет посвящен одному экрану приложения. Я постараюсь придерживаться одного плана во всех уроках, чтобы вам легче было ориентироваться, и вы сразу знали, где искать то, что вам нужно.
План будет такой:
1) Описание
Скрин или видео экрана. Краткое описание функций экрана, т.е. что он умеет делать. Что из Architecture Component тут используется.
2) Основные компоненты.
Это Activity, фрагменты, ViewModel, репозитории и т.п. Как и где создаются, как связаны между собой.
В Android приложении очень важно, кто на кого держит ссылку, чтобы не допустить утечек памяти. Я буду рисовать схему, на которой буду показывать ссылки между компонентами.
3) Взаимодействие между компонентами.
Тут будут описаны общие механизмы, не привязанные к какой-то конкретной функции экрана. Чаще всего это будет DataBinding. Он может быть нетривиальным и очень функциональным, поэтому вполне заслуживает отдельного описания.
Также в этот раздел могут попасть отдельные LiveData, которые используются, например, для отображения Snack или Toast.
4) Функционал
По одной беру функции экрана. Гифкой или скрином показываю, как функция работает в приложении. Разбираю, как она реализована в коде. Иногда рисую схему для большей наглядности.
Даже если в вашем текущем проекте вам пока не нужны все рассмотренные функции, они могут понадобиться позже. Вы всегда сможете снова открыть урок и посмотреть детали реализации.
Поехали
В общем, мне кажется, все должно получиться. Читайте, вникайте, перенимайте и улучшайте идеи. Фидбек пишите в Telegram чате. А о выходе новых уроков узнавайте в Telegram канале.
И да пребудут с нами знания )
Присоединяйтесь к нам в Telegram:
- в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.
- в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Compose, Kotlin, RxJava, Dagger, Тестирование, Performance
- ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня