#Arhitecture #Moxy
Don’t think about rotation of the screen. Moxy fixes the problem.
Разбор библиотеки Moxy и как с помощью ViewState она позволяет легко сохранять состояние Activity при изменение конфигурации
Don’t think about rotation of the screen. Moxy fixes the problem.
Разбор библиотеки Moxy и как с помощью ViewState она позволяет легко сохранять состояние Activity при изменение конфигурации
Medium
Don’t think about rotation of the screen. Moxy fix the problem.
Hi, everybody. If you work as an android developer, you know screen rotation is one of the biggest problems in the Android world. The view…
#Arhitecture #CleanArhitecture
Why you need Use Cases/Interactors
Разбор роли
👉 Слои Clean Arhitecture
👉 Почему
👉 Бесполезный
👉 Когда использовать
Why you need Use Cases/Interactors
Разбор роли
Use Case
/Interactor
в Clean Architecture:👉 Слои Clean Arhitecture
👉 Почему
Presenter
/ViewModel
не должны общаться с источниками данных напрямую👉 Бесполезный
Use Case
👉 Когда использовать
Use Case
Medium
Why you need use-cases/interactors
Since Clean Architecture became the new hot topic in the Android world there have been loads of code samples and articles that tried to…
👍1
#Kotlin #Coroutines #Arhitecture
Lessons learnt using Coroutines Flow in the Android Dev Summit 2019 app
"Kotlin First" - лозунг современной Android разработки. В этом случае нельзя не использовать Kotlin Coroutines, чтобы максимально стремиться к этому принципу и получить все преимущества языка.
Авторы приложения для Android Dev Summit 2019 о том, как изменился их взгляд с появлением Flow в разработки Domain (
Обновление подхода просто. Если раньше ваш слой модели мог возвращать
В статье также рассказывается как перейти со старых подходов на Flow и как применять его в новом API. Ну и как же без освещения тестирования!
Lessons learnt using Coroutines Flow in the Android Dev Summit 2019 app
"Kotlin First" - лозунг современной Android разработки. В этом случае нельзя не использовать Kotlin Coroutines, чтобы максимально стремиться к этому принципу и получить все преимущества языка.
Авторы приложения для Android Dev Summit 2019 о том, как изменился их взгляд с появлением Flow в разработки Domain (
UseCase
) и Model (Repository
, Data Source
) слоев.Обновление подхода просто. Если раньше ваш слой модели мог возвращать
LiveData
(например за наблюдением обновление обновление в Room), то теперь все это переходит во Flow и превращается в LiveData
только в ViewModel
. Если вам не нужно наблюдать за изменениями - используйте обычные suspend
функции.В статье также рассказывается как перейти со старых подходов на Flow и как применять его в новом API. Ну и как же без освещения тестирования!
Medium
Lessons learnt using Coroutines Flow
in the Android Dev Summit 2019 app
#Arhitecture #Kotlin #Multiplatform
MVIKotlin
Знакомы с библиотекой MVIDroid? Так вот ее больше нет. Она не умерла, а переродилась в MVIKotlin:
👉 Стала мультиплатформенной на основе Kotlin MPP
👉 Поддержка Android, JVM, JavaScript, iOS (Arm64 и X64), Linux X64
👉 Библиотека независимо от любого подхода и может работать на основе Reaktive или Kotlin Coroutines
👉 Поддержка многопоточности на Kotlin/Native
👉 Готовый подключаемый UI для Android и iOS
Одной из крутых фичей библиотеки является "Time Travel" - все изменения состояния сохраняются и можно переключаться между ними внутри приложения, с помощью библиотеки расширения. Демо "Time Travel"
MVIKotlin
Знакомы с библиотекой MVIDroid? Так вот ее больше нет. Она не умерла, а переродилась в MVIKotlin:
👉 Стала мультиплатформенной на основе Kotlin MPP
👉 Поддержка Android, JVM, JavaScript, iOS (Arm64 и X64), Linux X64
👉 Библиотека независимо от любого подхода и может работать на основе Reaktive или Kotlin Coroutines
👉 Поддержка многопоточности на Kotlin/Native
👉 Готовый подключаемый UI для Android и iOS
Одной из крутых фичей библиотеки является "Time Travel" - все изменения состояния сохраняются и можно переключаться между ними внутри приложения, с помощью библиотеки расширения. Демо "Time Travel"
GitHub
GitHub - arkivanov/MVIKotlin: Extendable MVI framework for Kotlin Multiplatform with powerful debugging tools (logging and time…
Extendable MVI framework for Kotlin Multiplatform with powerful debugging tools (logging and time travel) - arkivanov/MVIKotlin
#Sample #Arhitecture
Marvel Heroes - пример приложения на основе MVVM
Все кто любит супергероев и примеры приложение с использованием современных архитектур, тогда вам стоит посмотреть на репозиторий.
Тех стек приложения:
👉 min SDK = 21
👉 Kotlin based + Coroutines for asynchronous.
👉 Architecture Components: LiveData, Lifecycle, ViewModel, Room.
👉 MVVM Architecture (View - DataBinding - ViewModel - Model)
👉 Koin
👉 Retrofit2 & Gson
👉 OkHttp3
👉 Glide
👉 TransformationLayout
👉 WhatIf
👉 DiscreteScrollView
👉 Timber
👉 Material Components
Marvel Heroes - пример приложения на основе MVVM
Все кто любит супергероев и примеры приложение с использованием современных архитектур, тогда вам стоит посмотреть на репозиторий.
Тех стек приложения:
👉 min SDK = 21
👉 Kotlin based + Coroutines for asynchronous.
👉 Architecture Components: LiveData, Lifecycle, ViewModel, Room.
👉 MVVM Architecture (View - DataBinding - ViewModel - Model)
👉 Koin
👉 Retrofit2 & Gson
👉 OkHttp3
👉 Glide
👉 TransformationLayout
👉 WhatIf
👉 DiscreteScrollView
👉 Timber
👉 Material Components
#Arhitecture #Navigation
Context free Android navigation
Организация навигации в Android приложении имеет особенности - нам необходимо Activity, Contex либо Fragment (добавленный в Activity). Держать ссылки на эти компоненты из ViewModel не стоит. Как тогда организовать правильно навигацию не перекидывая события о переходе в подписчиков
В статье рассматривается подход в виде абстракции Navigator, которую вы можете использовать в
Context free Android navigation
Организация навигации в Android приложении имеет особенности - нам необходимо Activity, Contex либо Fragment (добавленный в Activity). Держать ссылки на эти компоненты из ViewModel не стоит. Как тогда организовать правильно навигацию не перекидывая события о переходе в подписчиков
LiveData
из ViewModel
?В статье рассматривается подход в виде абстракции Navigator, которую вы можете использовать в
ViewModel
.Medium
Context free Android navigation
You may be familiar with this situation: You want a ViewModel without Android code, but some dependencies need an Activity to navigate. Or…
#Arhitecture
How To Write Use Cases (Interactors) in Kotlin
Взгляд на реализацию Use Case (или Interactor) в Kotlin: синхронный, асинхронный со слушателем, асинхронный на основе Coroutine
How To Write Use Cases (Interactors) in Kotlin
Взгляд на реализацию Use Case (или Interactor) в Kotlin: синхронный, асинхронный со слушателем, асинхронный на основе Coroutine
TechYourChance
How To Write Use Cases (Interactors) in Kotlin
Detailed discussion of various ways to implement use cases (aka interactors) in Kotlin
#Arhitecture #LIveData
Don’t use LiveData in Repositories
Появление Arch Component показало и видение архитектуры от Google на основе этих компонентов (схема тут). Видение это подразумевало, что начиная от источников данных в Storage и Repostiory у вас возвращаются LiveData, для обеспечения реактивного получения обновления данных.
Вы задумывались о том, почему компонент
Также
Хорошей заменой для этого будет использование LiveData только для коммуникации между ViewModel и UI, а на всех остальных слоях другие реактивные подходы:
👉 Coroutines Flow
👉 Reaktive
👉 RxJava
Don’t use LiveData in Repositories
Появление Arch Component показало и видение архитектуры от Google на основе этих компонентов (схема тут). Видение это подразумевало, что начиная от источников данных в Storage и Repostiory у вас возвращаются LiveData, для обеспечения реактивного получения обновления данных.
Вы задумывались о том, почему компонент
LiveData
, который имеет связь с жизненным циклом (ЖЦ), используется в слое с данными. Данные должны быть абстрагированы от особенностей платформы, в особенности таких как ЖЦ. Также
LiveData
имеет особенности по работе, например обновление данных происходит через главный поток, для обеспечения синхронизации обновленийХорошей заменой для этого будет использование LiveData только для коммуникации между ViewModel и UI, а на всех остальных слоях другие реактивные подходы:
👉 Coroutines Flow
👉 Reaktive
👉 RxJava
Medium
Don’t use LiveData in Repositories
We recently joined a new project with heavy LiveData usage, everywhere. Here’s what we learned about LiveData, Threading and Repositories.
#Navigation #Arhitecture
Вышли релизы Cicerone 6.0 и 6.1
В новой версии популярной библиотеки для навигации в Android приложение произошел ряд важных изменений:
👉 Переход на Kotlin
👉 Изменен пакет библиотеки (breaking changes)
👉 Возможность выбрать стратегию открытия нового экрана (add или replace)
👉 Добавлена поддержка
👉 Поддержка результатов
👉
Вышли релизы Cicerone 6.0 и 6.1
В новой версии популярной библиотеки для навигации в Android приложение произошел ряд важных изменений:
👉 Переход на Kotlin
👉 Изменен пакет библиотеки (breaking changes)
👉 Возможность выбрать стратегию открытия нового экрана (add или replace)
👉 Добавлена поддержка
FragmentFactory
👉 Поддержка результатов
👉
screenKey
используется как тэг Fragment
GitHub
Release Version 6.0 · terrakok/Cicerone
Fully rewritten on Kotlin! (breaking changes: a lot of external API was changed for more smoothy experience in Kotlin)
root package changed to com.github.terrakok for avoid migration problems
Added...
root package changed to com.github.terrakok for avoid migration problems
Added...