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

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#Lifecycle #ViewModel #Activity

The Android Lifecycle cheat sheet — part IV : ViewModels, Translucent Activities and Launch Modes

Четвертая часть в серии диаграмм жизненного цикла основных компонентов Android. В последней статье вы найдете информацию о жизненном цикле:
👉 ViewModel в Activity и Fragment
👉 Translucent Activity
👉 Activity в различных launch режимах: "single top" и "single task"
#RxJava #Lifecycle #Uber

RxJava2 AutoDispose by Uber was opened

Uber открыла доступ к своей библиотеке AutoDispose. Она позволяете автоматически вызывать dispose() вашим Observable

ПОд капотом все выполняется с помощью метода-фабрики autoDisposable() следующим образом:

myObservable
.doStuff()
.as(autoDisposable(this)) // The magic
.subscribe(s -> ...);

Поддерживается основные компоненты Android с жизненным циклом, Architecture Components, RxLifecycle, есть расширения для Kotlin и тестов
#AndroidX #ArchComponents #Lifecycle

Detecting when an Android app is in foreground or background

Как вы определяете что приложение ушло в фон или пользователь закрыл все Activity в приложение? В Android Architecture Components есть прекрасное решение для этого - ProcessLifecycleOwner.
👍1
#ArchitectureComponent #ViewModel #Lifecycle #Coroutines

Lifecycle 2.2.0

Много новых интеграций с Kotlin Coroutines:
👉 Конвертация Flow <-> LiveData
👉 liveData { } - генератор значений с помощью Coroutine, которые доставляются через LiveData
👉 LifecycleCoroutineScope - специальный CoroutineScope, связанный с Lifecycle. Он позволяет запускать Coroutine, когда Lifecycle достигнет определенного состояния с помощью launchWhenCreated, launchWhenResumed и launchWhenStarted
👉 suspend функции, связанные с LifecycleOwner и Lifecycle, которые позволяют дождаться заданного состояния Lifecycle: whenCreated, whenStarted, whenResumed, whenStateAtLeast (только для Lifecycle)


Но помимо этого
👉 Теперь вместо ViewModelProviders.of() надо создавать ViewModelProvider через конструктор
👉 Gradle Incremental Annotation Processor: Теперь вместо аннотирования методов, который должны вызываться на методы жизненного цикла, с помощью @OnLifecycleEvent используйте DefautLifecycleObserver.
#Jetpack #ArchitectureComponents #Lifecycle

Optimizing Android ViewModel with Lifecycle 2.2.0

Обзор последних возможностей библиотек Lifecycle (LiveData, ViewMode, Lifecycle), ktx расширений и лучших практик:
👉 Делегаты ViewModel
👉 Почему не стоит использовать AndroidViewModel
👉 Какие данные не стоит передавать в ViewModel
👉 Сохранение данных ViewModel
#Lifecycle

Lifecycle 2.3.0-alpha06

Изменение поведения
👉 DESTROYED теперь терминальное состояние, что означает отсутствие каких-либо дальнейших событий
👉 LifecycleRegistry теперь будет проверять, что метод вызываются на главном потоке

👉 Новые вспомогательные методы downFrom(State)downTo(State)upFrom(State)upTo(State), которые генерирует Event для заданного State и направление перехода для его осуществления.
👉 Новый метод Lifecycle.withStateAtLeast, который дожидается когда Lifecycle, достигнет заданного состояния
#Lifecycle

Kotlin lifecycle delegates

Библиотека поможет вам соединить жизненный цикл и действия, которые надо выполнить. Например, инициализацию объектов. Все это делается через Delegated Property
#Coroutines #Lifecycle

Deep Dive Into Android Lifecycle Coroutines

Разбор как работают CoroutineScope, которые являются частью библиотеки lifecycle-ktx, и какие особенности есть в их поведении.
#Coroutines #Lifecycle

repeatOnLifecycle API design story

В Lifecycle 2.4.0 (пока в альфа) нас ждут новые возможности вызова Lifecycle.repeatOnLifecycle. В статье разбираются подробности реализации, а именно:
👉 Почему Lifecycle.repeatOnLifecycle - это suspend функция
👉 Почему удалили LifecycleOwner.addRepeatingJob (спойлер - нарушение принципов Structured Concurrency)
👉 Что там с Flow.flowWithLifecycle
👉 Какие изменения API ещё будут
Обновления библиотек Jetpack Lifecycle 2.8.0

Lifecycle
👉 LocalLifecycleOwner из Compose переехал в lifecycle-runtime-compose
👉 Новые Composable API dropUnlessResumed и dropUnlessStarted что позволяет лямбду вызывать только когда LifecycleOwner достигнет состояния Resumed/Started соотвественно и не будет вызывать когда выйдет из него. Например, полезно для навигации
👉 LifecycleStartEffect и LifecycleResumeEffect бросают ошибку если не задать key. По аналоги с DisposableEffect
👉 API Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event и LifecycleRegistry теперь являются частью мультиплатформенных модулей

ViewModel
👉 ViewModel теперь позволяет передать произвольный CoroutineScope при создании. Полезно для тестов и не только
👉 ViewModel переписали на Kotlin и перешли с Closable на AutoClosable из Kotlin
👉 API ViewModel, ViewModelStore, ViewModelStoreOwner и ViewModelProvider теперь являются частью мультиплатформенных модулей
👉 ViewModelProvider.NewInstanceFactory и ViewModelProvider.AndroidViewModelFactory доступны только на Android
👉 Для всех таргетов не Android должна быть обязательна указана фабрика для ViewModel

LiveData
👉 Переписали NullSafeMutableLiveData

#lifecycle #viewmodel #compose #kmp
14👍10
Есть полезная Jetpack библиотека lifecycle-process, которая предоставляет Lifecycle, связанные с процессом вашего приложения (Application класс).

В статье(EN,7м) рассказывается как делают её интеграцию с корутинами и применяют в проекте

#jetpack #coroutines #lifecycle
👎116👍5