От State к Event: как два sealed class закрывают архитектуру Android-экрана в Kotlin

Хаотичные события в Android (навигация, тосты, запросы) часто превращаются в источник багов и нечитаемого кода. В этой статье вы узнаете, как использовать sealed-интерфейсы Kotlin для создания полной, типобезопасной модели экрана, где состояния и события управляются отдельно и предсказуемо. Вы научитесь превращать одноразовые побочные эффекты в строго контролируемый поток команд, получите compile-time гарантии, избавитесь от багов с поворотом экрана и сможете легко тестировать любые события UI. Рассмотренный подход не только защищает от ошибок, но и кардинально упрощает масштабирование логики. Вы сможете добавлять новые события без риска сломать существующую функциональность, а ваш UI-слой станет чистым и декларативным. При этом всё, что нужно для внедрения - это понимание базовых принципов Flow и ViewModel.

https://habr.com/ru/articles/993884/

#Android #Kotlin #sealed_class #sealed_interface #события #состояние #ViewModel #SharedFlow #типобезопасность #MVI

От State к Event: как два sealed class закрывают архитектуру Android-экрана в Kotlin

1. Введение: Состояния под контролем. Что делать с событиями? Представьте, что вы уже навели порядок в управлении состоянием вашего экрана. Вместо россыпи взаимозависимых булевых флагов и...

Хабр

[Перевод] Загрузка данных во ViewModel: рекомендации и Flow-based архитектура

Дискуссии об архитектуре Android часто перерастают в жаркие споры, вызывая и восторг, и резкую критику. Писать на такие темы непросто, и именно поэтому это стоит делать. Как показывает обсуждение в Твиттере , многие разработчики загружают данные в блоке init {} во ViewModel. Хотя подход кажется логичным, у него есть архитектурные недостатки. Автор статьи описал проблемы такого подхода и предложил гибкую альтернативу с использованием Flow.

https://habr.com/ru/articles/950494/

#android #viewmodel #архитектура #flow #kotlin

Загрузка данных во ViewModel: рекомендации и Flow-based архитектура

Дискуссии об архитектуре Android часто перерастают в жаркие споры, вызывая и восторг, и резкую критику. Писать на такие темы непросто, и именно поэтому это стоит делать. Эта статья показывает мой...

Хабр

lateinit вместо nullable: пять ошибок

Привет, Хабр! Сегодня разберёмся, почему попытка «избавиться от ? любой ценой» приводит к проблемам, и как жить с этим вообще жить.

https://habr.com/ru/companies/otus/articles/928980/

#kotlin #Android #Jetpack_Compose #Compose_анимации #UIанимации_Android #Kotlin_Flow #Архитектура_Androidприложений #viewmodel #hilt

lateinit вместо nullable: пять ошибок

Привет, Хабр! Сегодня разберёмся, почему попытка «избавиться от ? любой ценой» приводит к проблемам, и как жить с этим вообще жить. Зачем вообще lateinit, и почему он кусает? Kotlin дал...

Хабр

[Перевод] Ликбез по UseCase’ам Android: от базовых реализаций до мультипровайдерных и многомодульных систем — Часть 1

Чистая архитектура — не просто модный термин, а способ держать код в узде по мере роста Android-приложения. В этой статье — подробный разбор того, как выстроить работу с UseCase’ами: от базовой интеграции в ViewModel до сложных кейсов с несколькими провайдерами и платежными системами. Разберёмся, как применять принципы SOLID на практике, не скатываясь в оверинжиниринг — и при этом не жертвовать гибкостью архитектуры.

https://habr.com/ru/companies/otus/articles/925614/

#android #Kotlin #Мобильная_разработка #UseCase #Чистая_архитектура #SOLID_принципы #ViewModel #koin

Ликбез по UseCase’ам Android: от базовых реализаций до мультипровайдерных и многомодульных систем — Часть 1

Делаем архитектуру вашего Android‑приложения SOLID'нее... Современные Kotlin (и Android) проекты часто следуют принципам «Чистой» архитектуры (Clean Architecture), чтобы сделать код более...

Хабр

Статья 2: Подробнее про MVVM

Серия статей с очередным разбором MV* шаблонов, но с интересными деталями Даже опытные разработчики смогут найти что-то новое для себя Это вторая статья из серии , в которой подробно разбираем MVVM и является ли класс ViewModel от Google, сущностью ViewModel из шаблона Статья 2: Подробнее про MVVM - 🔨 Функции обратного вызова (Callback) - 🛠 Паттерн Наблюдатель (Observer) - 📜 MVVM (ViewModel) - 🔨 Привязка данных (Data Binding) Найти новое

https://habr.com/ru/articles/922984/

#архитектура #mvvm #templates #callback #observer #viewmodel

Статья 2: Подробнее про MVVM

Оригиналы этих постов можно почитать в тг канале НеКрутой Архитектор Там набирается материал для будущих статей с сильным опережением План: Статья 1: Введение в MV шаблоны / Хабр 📜 M‑V-подставь_свое 📜...

Хабр

Безопасное обновления состояния в ViewModel

Это краткая заметка о подходе, который я выработал для себя, чтобы обновлять состояние экрана при использовании MVI-like паттерна в ViewModel . Сразу оговорюсь, что классический "полноценный" MVI подразумевает использование редьюсеров, которые решают часть проблем, описанных в этой заметке, но сугубо на мой вкус, этот подход заставляет писать много бойлерплейтного кода.

https://habr.com/ru/articles/880108/

#viewmodel #kotlin #arrow #mvi

Безопасное обновления состояния в ViewModel

Это краткая заметка о подходе, который я выработал для себя, чтобы обновлять состояние экрана при использовании MVI-like паттерна в ViewModel . Сразу оговорюсь, что классический "полноценный" MVI...

Хабр

Управление настройками с помощью Jetpack DataStore: Простой подход к сохранению данных разных типов

Всем здравствуйте. Это моя первая статья на такую публику, поэтому просьба не судить строго! :-) При разработке Android-приложений часто возникает необходимость сохранять пользовательские настройки, такие как выбор темы, язык или другие данные пользователя. Jetpack DataStore — это современное решение для хранения таких данных, которое заменяет устаревший SharedPreferences . В этой статье мы рассмотрим, как использовать DataStore для хранения различных типов данных (Boolean, Integer, Float и String) и как интегрировать его с архитектурой MVVM, используя StateFlow для обновления UI. Что такое DataStore? Jetpack DataStore — это библиотека для хранения данных, поддерживающая асинхронное и безопасное чтение и запись данных. Она предоставляет два типа хранилищ: 1. Preferences DataStore : Используется для хранения пар "ключ-значение" (похож на SharedPreferences ). 2. Proto DataStore : Используется для хранения структурированных данных на основе протокольных буферов. В этой статье мы сосредоточимся на Preferences DataStore , которое идеально подходит для хранения настроек приложения.

https://habr.com/ru/articles/874034/

#Jetpack_DataStore #MVVM #ViewModel #Android #Kotlin #Jetpack

Управление настройками с помощью Jetpack DataStore: Простой подход к сохранению данных разных типов

Введение Всем здравствуйте. Это моя первая статья на такую публику, поэтому просьба не судить строго! :-) При разработке Android-приложений часто возникает необходимость сохранять пользовательские...

Хабр

Подходы к созданию ViewModel в Android

В данной статье будут рассмотрены способы создания ViewModel (далее VM) в Android, а также usecase для каждого подхода.

https://habr.com/ru/articles/871922/

#mvvm #viewmodel #viewmodelprovider #android #kotlin

Подходы к созданию ViewModel в Android

В данной статье будут рассмотрены способы создания ViewModel (далее VM) в Android, а также usecase для каждого подхода. Для начала сразу оговорим как нельзя создавать VM. private val viewModel =...

Хабр

Как я писал суперкастомизированное Android-приложение в 2024 году

Как я писал супер кастомизированное Android приложение в 2024 году В начале года у меня появилась прикольная идея: сделать Android-приложение, которое будет показывать анимации для алгоритмов сортировки. Чтобы вы сразу поняли, что представляет из себя приложение, на GitHub есть скрины и короткие видео. Давайте по кусочкам разберём мой проект. Читать дальше

https://habr.com/ru/companies/ruvds/articles/851256/

#ruvds_статьи #android #android_view #kotlin #application #algorithms #sorting_algorithms #viewmodel #viewmodelprovider #sparse_array #custom_view #bitwise_operators #mvvm #mvi

Как я писал суперкастомизированное Android-приложение в 2024 году

Как я писал супер кастомизированное Android приложение в 2024 году В начале года у меня появилась прикольная идея: сделать Android-приложение, которое будет показывать анимации для алгоритмов...

Хабр

Как грузить данные во ViewModel?

Привет, Хабр! Эта статья будет полезна для мобильных разработчиков, потому что в ней обсуждаются различные подходы к первоначальной загрузке данных во вьюмодели (Jetpack ViewModel) при ее использовании в проектах на Jetpack Compose (либо Compose Multiplatform). Тема эта настолько холиварная, что один из самых влиятельных ютуберов в сфере Android-разработки Philip Lackner даже недавно посвятил ей отдельный как всегда очень качественный обзор . Эта статья - во многом ответ и дополнение к нему. Итак, перейдем к сути.

https://habr.com/ru/articles/848824/

#viewmodel #jetpack_compose #android #jetpack_sdk

Как грузить данные во ViewModel?

Привет, Хабр! Эта статья будет полезна для мобильных разработчиков, потому что в ней обсуждаются различные подходы к первоначальной загрузке данных во вьюмодели (Jetpack ViewModel) при ее...

Хабр