#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"
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. Она позволяете автоматически вызывать
ПОд капотом все выполняется с помощью метода-фабрики autoDisposable() следующим образом:
Поддерживается основные компоненты Android с жизненным циклом, Architecture Components, RxLifecycle, есть расширения для Kotlin и тестов
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 и тестов
GitHub
GitHub - uber/AutoDispose: Automatic binding+disposal of RxJava streams.
Automatic binding+disposal of RxJava streams. Contribute to uber/AutoDispose development by creating an account on GitHub.
#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
#ArchitectureComponent #ViewModel #Lifecycle #Coroutines
Lifecycle 2.2.0
Много новых интеграций с Kotlin Coroutines:
👉 Конвертация
👉 liveData { } - генератор значений с помощью Coroutine, которые доставляются через
👉 LifecycleCoroutineScope - специальный
👉 suspend функции, связанные с
Но помимо этого
👉 Теперь вместо
👉 Gradle Incremental Annotation Processor: Теперь вместо аннотирования методов, который должны вызываться на методы жизненного цикла, с помощью
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
Optimizing Android ViewModel with Lifecycle 2.2.0
Обзор последних возможностей библиотек Lifecycle (LiveData, ViewMode, Lifecycle), ktx расширений и лучших практик:
👉 Делегаты ViewModel
👉 Почему не стоит использовать AndroidViewModel
👉 Какие данные не стоит передавать в ViewModel
👉 Сохранение данных ViewModel
Medium
Optimizing Android ViewModel with Lifecycle 2.2.0
Initialization, passing arguments, and saved state
#Lifecycle
Lifecycle 2.3.0-alpha06
Изменение поведения
👉 DESTROYED теперь терминальное состояние, что означает отсутствие каких-либо дальнейших событий
👉
👉 Новые вспомогательные методы
👉 Новый метод Lifecycle.withStateAtLeast, который дожидается когда 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
Kotlin lifecycle delegates
Библиотека поможет вам соединить жизненный цикл и действия, которые надо выполнить. Например, инициализацию объектов. Все это делается через Delegated Property
#Coroutines #Lifecycle
Deep Dive Into Android Lifecycle Coroutines
Разбор как работают CoroutineScope, которые являются частью библиотеки lifecycle-ktx, и какие особенности есть в их поведении.
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 ещё будут
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 переехал в
👉 Новые Composable API dropUnlessResumed и dropUnlessStarted что позволяет лямбду вызывать только когда LifecycleOwner достигнет состояния Resumed/Started соотвественно и не будет вызывать когда выйдет из него. Например, полезно для навигации
👉 LifecycleStartEffect и LifecycleResumeEffect бросают ошибку если не задать key. По аналоги с DisposableEffect
👉 API
ViewModel
👉 ViewModel теперь позволяет передать произвольный CoroutineScope при создании. Полезно для тестов и не только
👉 ViewModel переписали на Kotlin и перешли с Closable на AutoClosable из Kotlin
👉 API
👉
👉 Для всех таргетов не Android должна быть обязательна указана фабрика для
LiveData
👉 Переписали NullSafeMutableLiveData
#lifecycle #viewmodel #compose #kmp
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 должна быть обязательна указана фабрика для
ViewModelLiveData
👉 Переписали NullSafeMutableLiveData
#lifecycle #viewmodel #compose #kmp
❤14👍10
Есть полезная Jetpack библиотека lifecycle-process, которая предоставляет Lifecycle, связанные с процессом вашего приложения (Application класс).
В статье(EN,7м) рассказывается как делают её интеграцию с корутинами и применяют в проекте
#jetpack #coroutines #lifecycle
В статье(EN,7м) рассказывается как делают её интеграцию с корутинами и применяют в проекте
#jetpack #coroutines #lifecycle
👎11❤6👍5
Google выпустила мажорное обновление библиотек Lifecycle. Этот релиз сфокусирован на улучшении интеграции с Compose.
rememberLifecycleOwner для ComposeНовый композабл позволяет создавать изолированные
LifecycleOwner внутри UI. Идеально для компонентов, которым нужно независимое управление состоянием — например, для HorizontalPager, где только активная страница должна быть в состоянии RESUMED.@Composable
fun MyComposable() {
val lifecycleOwner = rememberLifecycleOwner(
maxLifecycle = Lifecycle.State.RESUMED,
parentLifecycleOwner = LocalLifecycleOwner.current,
)
CompositionLocalProvider(
LocalLifecycleOwner provides lifecycleOwner
) {
// Дочерние композаблы теперь имеют собственный жизненный цикл
}
}
Новый артефакт
lifecycle-viewmodel-navigation3 предоставляет готовый декоратор для автоматической привязки ViewModel к отдельным экранам в Navigation 3.NavDisplay(
backStack = backStack,
entryDecorators = listOf(
rememberSaveableStateHolderNavEntryDecorator(),
rememberViewModelStoreNavEntryDecorator(), // Добавляем эту строку
),
entryProvider = entryProvider { /* ... */ }
)
Удобства для разработчиков:
👉 Идиоматичный Kotlin API для создания кастомных
CreationExtras CreationExtras {
this[MY_CUSTOM_KEY] = "myValue"
}
👉 Метод
savedStateHandle.saved() теперь нативно поддерживает nullable типы👉 Конструкторы SavedStateHandle помечены как
@VisibleForTesting⚠️ Важное изменение
Повышение
minSdk с API 21 до API 23 — убедитесь, что ваше приложение соответствует новым требованиям.#Jetpack #Lifecycle #Compose #Navigation #ViewModel #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🔥10🤯3👍2🙏1