Android Broadcast
14.1K subscribers
3.4K photos
290 videos
11 files
5.68K links
Подборка новостей и статей для Android разработчиков.

Связь с автором @android_broadcast_bot
Реклама @android_broadcast_bot

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#Architecture #MVVM #MVP

Различия между MVVM и остальными MV*-паттернами

Хорошая статья в рамках которой автор показал историю развития MV(Any) паттернов, так и различия между ними и ошибки в понимание.

Вы найдете информацию о:
👉 MVC (Model-View-Controller)
👉 MVP (Model-View-Presenter) в 2 вариациях
👉 Passive View
👉 Supervising Controller
👉Presentation Model
👉MVVM (Model-View-ViewModel)

Presentation Model описывает подход, который использует Google для архитектуры на основе Architecture Components в Android.

Помните самое главное - нет правильной архитектуры, есть только та, которая эффективно решит задачу вашего приложения, и возможно она вполне будет за рамками этого списка. Напишите о ней в @android_broadcast_discussions и я расскажу о ней в канале.
#ArchitectureComponents #MVVM #Architecture

"MVVM with architecture components: a step by step guideline for MVP lovers" by Antonio Leiva

Давным давно в мире Android до Google I/O 2017 в архитектуре Android приложений преимущественно использоваться паттерн MVP, но появление Architecture Component (Arch Comp) начало склонять часу весов в сторону MVVM.

Если вы хотите перейти с MVP на MVVP в вашем приложение, то вам поможет стать от Antonio Leiva, в которой он описал способ миграции на Arch Comp.
#Architecture #ViewModel #MVVM #ArchComponents

MVVM — How View and ViewModel should communicate?

Выбор архитектуру - важный вопрос для любого проекта, но приняв это решение, надо понимать как эффективно реализовать его, чтобы получить все преимущества от.

На текущий момент очень популярным решением стало MVVM (Model-View-ViewModel). Рост спроса на эту архитектуру подкрепился тем, что разработчики из Google сделали готовые компоненты для удобной реализации этого подхода, что значительно упрощает задачу.

Замечание: классический MVVM, описанный в Microsoft, отличается от того что обычно применяется в Android

Чтобы сделать MVVM качественно надо придерживаться нескольких правил:
👉 У каждого компонента есть четкая роль: View отвечает за отображение данных, VM - предоставляет данные, которые отобразятся на View и обрабатывает события, связанные с данными в ней
👉 VM содержит только логику. Он не должен содержать никаких классов из Android SDK, все платформенное API должно предоставляться через абстракции в виде интерфейсов.
👉 Когда происходит клик или прочие события на UI, View только сообщается VM о произошедшем событие (простым вызовом метода в VM) и не выполняет какой-либо логики
👉 VM не знает ничего о View
👉 При модификации данных в VM они сразу же должны отображаться в View. Эффективный способ достичь этого - использовать LiveData. Это позволяет организовать push взаимодействие между VM и View, что дает мгновенное отображение любых изменений в данных на экране.
👉 ViewModel может предоставлять дополнительные методы для View. В случаях когда у вас много логики в VM можно вынести ее в отдельный класс - Presenter, который служит медиатором между VM. В таком случае VM будет служить чистым контейнером состояния View.

Следование правилам, описанным выше, позволит вам:
👉 реализовать эффективную архитектуру в Android
👉 не иметь проблем с жизненным циклом
👉 не думать о сохранение данных при повороте экрана
👉 позволит покрыть логику Unit тестами
👉 упростит расширение функционала в будущем
#MVVM #Architecture #BestPractices #ArchComponents

Our Way to MVVMI and Mistakes We Made When Implementing MVVM

Лучше учиться на ошибках других. Поэтому запомните из боли разработчиков их опыт интеграции и примите следующий правила (что НЕ стоит делать) при работе с MVVM на основе Arch Components:
Передавать LiveData в качестве параметра в репозиторий и обновлять его там
Комбинировать бизнес логику и логику представления в ViewModel
Полагаться только на ViewModel для сохранения состояния между пересозданием Activity/Fragment
Не сбрасывать слушатели Repository, когда уничтожается View
Получать данные из ViewModel в View с помощь getter, а не реагировать на изменение данных через LiveData
#MVVM #AppArchitecture #ArchitectureComponents

Android MVVM — Do’s and Don’ts

Несколько рекомендаций при реализации архитектуры MVVM на основе Architecture Components:
👉 ViewModel не должна использовать классы из Android SDK. Используйте интерфейсы, которые позволят вам абстрагироваться от платформенной реализации.
👉 View не должна содержать какой либо логики (быть пассивной). Место для всей логики - это ViewModel.
👉 ViewModel не должна иметь ссылки на View
👉 Если вы хотите получать обновления данных от LiveData для обновления UI, тогда используйте viewLifecycleOwner.
#Architecture #ArchitectureComponents #AndroidX #MVVM

С появлением Architecture Components в Android реализация MVVM на основе этих компонентов стала очень популярна. Я и сам выбираю такое решение в связи с тем, что она имеет множество позитивных моментов:
👉 Решение популярных задач в архитектуре Android приложений
👉 Хорошая документация: статьи, видео, примеры и Codelab
👉 Интеграция с инструментарием для разработки
👉 Поддержка от Google
👉 Большинство разработчиков знают как ее реализовывать и это способ единообразен из-за одного источника правды (Google). Это уменьшает время на обучение стажеров и интеграцию новых людей + между проектами становится общий стандарт
👉 Интеграция между различными библиотеками из Architecture Component так и сторонними (RxJava, Kotlin Coroutines)

Я не считаю ее идеалом, но Arch Components значительно упрощают создание приложений на Android и дает взгляд на архитектуру приложений от создателя Android SDK.
#architecture #mvi #mvvm

The famous and unthought MVI "misconception" in Android, alongside MVVM (11 мин)

Автор проходится танком по Jetpack MVVM из Architecture Components. Тезисы:
👉 Android MVVM - это MVC
👉 ViewModel - это Presenter
👉 MVI - не является серебряной пулей