Lazylifecycle Callbacks - это простая структура для отложения ваших не существенных задач и инициализаций от пути запуска экрана, сохраняя при этом те же гарантии выполнения вызовов жизненного цикла Android.
Сначала розыгрыш: Когда приложение запускается, воспроизводитесь в магазине, отслеживает холодные, теплые и горячие номера запуска. И это делает это, измеряя, как быстро ваше приложение может нарисовать ваш первый кадр. Приложение может запускаться с помощью пусковой установки, уведомлений, Deeplinks и т. Д., И каждый может привести к тому, что пользователя на разных экранах. Считается, что приложение отображало свой первый экран, когда «отображаемый» маркер отображается в logCat. После всех обратных вызовов, таких как Oncreate, On -Start и OnResume, он всегда отображался.
Таким образом, любой код, который выполняется в Oncreate, OnStart и OnResume, и другие обратные вызовы (не упоминающие такие вещи, как OnPostresume), может сделать время запуска экрана. Таким образом, рекомендуется удалить отсроченный код вдали от обратных вызовов Android Lifecycle.
Но куда мы должны его переместить? Мы можем делать что -то по требованию, но не все можно перенести в сторону. Например, вы хотите начать делать N/W вызовы для получения изображений как можно скорее. Здесь мы не хотим, чтобы он начинался, пока происходит рендеринг экрана, но в тот момент, когда экран отображает представление заполнителя, нам нужно запустить вызовы N/W-DB. Предположим, вы хотите загрузить черновик электронного письма из БД, сначала мы хотели бы отобразить экран Compose, а затем начать получать черновик.
Порядок этих обратных вызовов поддерживается в соответствии с Android. В деятельности, onlazycreate () будет следовать на lazystart (), за которым следует onlazyresume (). В фрагментах за onlazycreate () будет следовать OnviewCreatedlazy (View), за которым следует onlazystart (), за которым следует onlazyresume (). На ум - все, что все ленивые обратные вызовы случаются после того, как триггеры ленивого менеджера жизненного цикла удовлетворены. Они не взаимодействуют с обратными вызовами жизненного цикла Android.
Добавьте приведенный ниже код в зависимости файлов build.gradle dependencies { implementation 'com.github.microsoft:LazylifecycleCallbacks:v1.0' }
LazyLifecycleCallbacks в деятельности (предпочтительнее BaseActivity ) и обеспечить реализации метода по умолчанию.onCreate() .lifecycleManager.activate() in onResume ,lifecycleManager.deactivate() onPause()supportsLazyLifecycleCallbacks() в true .BaseActivity теперь могут переопределить ленивые обратные вызовы жизненного цикла и использовать его.Смотрите код ниже:
abstract class BaseActivity : AppCompatActivity (), LazyLifecycleCallbacks {
protected lateinit var lazyLifecycleManager : LazyLifecycleManager
override fun onCreate ( savedInstanceState : Bundle ? ) {
super .onCreate(savedInstanceState)
lazyLifecycleManager = ViewBasedLazyLifecycleManager ( this )
}
override fun onResume () {
super .onResume()
lazyLifecycleManager.activate()
}
override fun onPause () {
super .onPause()
lazyLifecycleManager.deactivate()
}
override fun onLazyCreate () {}
override fun onLazyStart () {}
override fun onLazyResume () {}
override fun supportsLazyLifecycleCallbacks (): Boolean = false
}