#ArchComponents #Livedata #Testing
Writing effective ViewModel test от Josef Raska
Статья-реклама библиотеки LiveData Testing, которая позволяет эффективно тестировать LiveData в ViewModel.
По итогу ваш код сводится к
viewModel.counterLiveData()
.test()
.assertHasValue()
.assertValue(5)
Writing effective ViewModel test от Josef Raska
Статья-реклама библиотеки LiveData Testing, которая позволяет эффективно тестировать LiveData в ViewModel.
По итогу ваш код сводится к
viewModel.counterLiveData()
.test()
.assertHasValue()
.assertValue(5)
Medium
Effective LiveData and ViewModel Testing
Learn how you can write effective tests of LiveData and ViewModel with ease.
#AndroidX #ArchComponents #Lifecycle
Detecting when an Android app is in foreground or background
Как вы определяете что приложение ушло в фон или пользователь закрыл все Activity в приложение? В Android Architecture Components есть прекрасное решение для этого - ProcessLifecycleOwner.
Detecting when an Android app is in foreground or background
Как вы определяете что приложение ушло в фон или пользователь закрыл все Activity в приложение? В Android Architecture Components есть прекрасное решение для этого - ProcessLifecycleOwner.
Medium
Detecting when an Android app is in foreground or background
It’s a rule: every Android app has its own logic, context and behaviors. And the solutions that may apply successfully to certain cases…
👍1
#ArchComponents #Navigation #MasterDetail
Master-Detail views with Navigation Components
Совсем недавно вышел Navigation Arch Component и идет его активное исследование. В статье рассказывается как реализовать "Master-Detail" на планшете с помощью новой библиотеки. Как оказалось это не совсем тривиальное решение.
Master-Detail views with Navigation Components
Совсем недавно вышел Navigation Arch Component и идет его активное исследование. В статье рассказывается как реализовать "Master-Detail" на планшете с помощью новой библиотеки. Как оказалось это не совсем тривиальное решение.
Medium
Master-Detail views with Navigation Components
I researched if the Navigation Architecture Components could be integrated with our own navigation system at work. The navigation of this…
👍1
#Architecture #ViewModel #MVVM #ArchComponents
MVVM — How View and ViewModel should communicate?
Выбор архитектуру - важный вопрос для любого проекта, но приняв это решение, надо понимать как эффективно реализовать его, чтобы получить все преимущества от.
На текущий момент очень популярным решением стало MVVM (Model-View-ViewModel). Рост спроса на эту архитектуру подкрепился тем, что разработчики из Google сделали готовые компоненты для удобной реализации этого подхода, что значительно упрощает задачу.
Замечание: классический MVVM, описанный в Microsoft, отличается от того что обычно применяется в Android
Чтобы сделать MVVM качественно надо придерживаться нескольких правил:
👉 У каждого компонента есть четкая роль:
👉
👉 Когда происходит клик или прочие события на UI,
👉
👉 При модификации данных в
👉 ViewModel может предоставлять дополнительные методы для View. В случаях когда у вас много логики в
Следование правилам, описанным выше, позволит вам:
👉 реализовать эффективную архитектуру в Android
👉 не иметь проблем с жизненным циклом
👉 не думать о сохранение данных при повороте экрана
👉 позволит покрыть логику Unit тестами
👉 упростит расширение функционала в будущем
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 тестами
👉 упростит расширение функционала в будущем
👍1
#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
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
Medium
Our Way to MVVMI and Mistakes We Made When Implementing MVVM
My story on this project started with the management’s decision of refactoring it as developers had hit the wall with “God” Activities…
👍1
#Workmanager #ArchComponents #RxJava
How to use WorkManager with RxJava
Для всех тех кто уже начал использовать WorkManager и любит RxJava. В статье вы можете найти рецепт, как подружить эти 2 библиотеки больше чем это умеет
Библиотека позволит вам получать обновления статуса выполнения задач или данные в виде
How to use WorkManager with RxJava
Для всех тех кто уже начал использовать WorkManager и любит RxJava. В статье вы можете найти рецепт, как подружить эти 2 библиотеки больше чем это умеет
androidx.work:work-rxjava2
, а также результат приготовления этого рецепта в виде библиотеки RxWorkManagerObservers.Библиотека позволит вам получать обновления статуса выполнения задач или данные в виде
Observable
.Medium
How to use WorkManager with RxJava
Work manager is one of the Android Architecture Components. It allows running a deferrable background work which will be executed even…
👍1
#ArchComponents #GoogleIO
Google I/O'19: What's New in Architecture Components
Продолжительность: 37:11
Видеозапись с обзором того что появилось недавно в последние пару месяцев в Architecture Components и чего ждать в ближайших версиях. Коротко наш ждет:
👉 Больше поддержки фичей Kotlin
👉 Поддержка корутин
👉 Поддержка многомодульности
👉 Значительные улучшения производительности в Data Binding (уже многое доступно в Android Studio 3.5)
Google I/O'19: What's New in Architecture Components
Продолжительность: 37:11
Видеозапись с обзором того что появилось недавно в последние пару месяцев в Architecture Components и чего ждать в ближайших версиях. Коротко наш ждет:
👉 Больше поддержки фичей Kotlin
👉 Поддержка корутин
👉 Поддержка многомодульности
👉 Значительные улучшения производительности в Data Binding (уже многое доступно в Android Studio 3.5)
YouTube
What's new in architecture components (Google I/O'19)
Learn the latest changes in Architecture Components as well as new libraries for 2019.
Watch more #io19 here:
Android & Play at Google I/O 2019 Playlist → https://goo.gle/2GRWlQh
Google I/O 2019 All Sessions Playlist → https://goo.gle/io19allsessions
Learn…
Watch more #io19 here:
Android & Play at Google I/O 2019 Playlist → https://goo.gle/2GRWlQh
Google I/O 2019 All Sessions Playlist → https://goo.gle/io19allsessions
Learn…
👍1
#ArchComponents
Common mistakes when using Architecture Components
Разбор ошибок, которые допускают разработчики при работе с ViewModel, LiveData и Lifecycle:
👉 Использование неправильного Lifecycle
👉 Не учитывать что в LiveData может быть null
👉 Утечки памяти
👉 Отслеживание LievData в неправильном месте
Common mistakes when using Architecture Components
Разбор ошибок, которые допускают разработчики при работе с ViewModel, LiveData и Lifecycle:
👉 Использование неправильного Lifecycle
👉 Не учитывать что в LiveData может быть null
👉 Утечки памяти
👉 Отслеживание LievData в неправильном месте