Android Broadcast
14.2K subscribers
3.53K photos
347 videos
11 files
5.92K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab
加入频道
#Arhitecture #CleanArhitecture

Why you need Use Cases/Interactors

Разбор роли Use Case/Interactor в Clean Architecture:
👉 Слои Clean Arhitecture
👉 Почему Presenter/ViewModel не должны общаться с источниками данных напрямую
👉 Бесполезный Use Case
👉 Когда использовать Use Case
👍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 (UseCase) и Model (Repository, Data Source) слоев.

Обновление подхода просто. Если раньше ваш слой модели мог возвращать LiveData (например за наблюдением обновление обновление в Room), то теперь все это переходит во Flow и превращается в LiveData только в ViewModel. Если вам не нужно наблюдать за изменениями - используйте обычные suspend функции.

В статье также рассказывается как перейти со старых подходов на Flow и как применять его в новом API. Ну и как же без освещения тестирования!
#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"
#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
#Arhitecture #Navigation

Context free Android navigation

Организация навигации в Android приложении имеет особенности - нам необходимо Activity, Contex либо Fragment (добавленный в Activity). Держать ссылки на эти компоненты из ViewModel не стоит. Как тогда организовать правильно навигацию не перекидывая события о переходе в подписчиков LiveData из ViewModel?

В статье рассматривается подход в виде абстракции Navigator, которую вы можете использовать в ViewModel.
#Arhitecture

How To Write Use Cases (Interactors) in Kotlin

Взгляд на реализацию Use Case (или Interactor) в Kotlin: синхронный, асинхронный со слушателем, асинхронный на основе Coroutine
#Arhitecture #LIveData

Don’t use LiveData in Repositories

Появление Arch Component показало и видение архитектуры от Google на основе этих компонентов (схема тут). Видение это подразумевало, что начиная от источников данных в Storage и Repostiory у вас возвращаются LiveData, для обеспечения реактивного получения обновления данных.

Вы задумывались о том, почему компонент LiveData, который имеет связь с жизненным циклом (ЖЦ), используется в слое с данными. Данные должны быть абстрагированы от особенностей платформы, в особенности таких как ЖЦ.

Также LiveData имеет особенности по работе, например обновление данных происходит через главный поток, для обеспечения синхронизации обновлений

Хорошей заменой для этого будет использование LiveData только для коммуникации между ViewModel и UI, а на всех остальных слоях другие реактивные подходы:
👉 Coroutines Flow
👉 Reaktive
👉 RxJava
#Navigation #Arhitecture

Вышли релизы Cicerone 6.0 и 6.1

В новой версии популярной библиотеки для навигации в Android приложение произошел ряд важных изменений:
👉 Переход на Kotlin
👉 Изменен пакет библиотеки (breaking changes)
👉 Возможность выбрать стратегию открытия нового экрана (add или replace)
👉 Добавлена поддержка FragmentFactory
👉 Поддержка результатов
👉 screenKey используется как тэг Fragment