Lifecycle @OnLifecycleEvent() 已弃用,您应该使用 LifecycleEventObserver 或 DefaultLifecycleObserver [重复]

问题描述 投票:0回答:1

答案在底部

我想这对你有用

android android-lifecycle lifecycle application-lifecycle
1个回答
13
投票

1 - 生命周期事件观察者

首先

你应该实现这个:

dependencies {
    implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
}

其次

你应该这样写:

class App : Application() {
    override fun onCreate() {
        super.onCreate()

        ProcessLifecycleOwner.get().lifecycle.addObserver(lifecycleEventObserver)

    }

第三

你应该这样写:
这里我只实现了两个Lifecycle Event,当你需要其他Lifecycle Event时,你应该实现它们

    var lifecycleEventObserver = LifecycleEventObserver { _, event ->
        when (event) {
            Lifecycle.Event.ON_STOP -> {
                //your code here
            }
            Lifecycle.Event.ON_START -> {
                //your code here
            }
            else -> {}
        }
    }

2 - 默认生命周期观察者

首先

你应该实现这个:

dependencies {
    implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
}

其次

你应该这样写:

class App : Application() {
    override fun onCreate() {
        super.onCreate()

        ProcessLifecycleOwner.get().lifecycle.addObserver(defaultLifecycleObserver)

    }

第三

你应该这样写:
这里我只实现了两个Lifecycle Event,当你需要其他Lifecycle Event时,你应该实现它们

    var defaultLifecycleObserver = object : DefaultLifecycleObserver {

        override fun onStart(owner: LifecycleOwner) {
            super.onStart(owner)
            //your code here
        }

        override fun onStop(owner: LifecycleOwner) {
            super.onStop(owner)
            //your code here
        }
    }

3 - ActivityLifecycleCallbacks

首先

你应该这样写:

class App : Application() {
    override fun onCreate() {
        super.onCreate()

        registerActivityLifecycleCallbacks(activityLifecycleCallbacks)

    }

其次

你应该这样写:

    private val activityLifecycleCallbacks = object : ActivityLifecycleCallbacks {
        
        override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
            
        }

        override fun onActivityStarted(activity: Activity) {
            
        }

        override fun onActivityResumed(activity: Activity) {
            
        }

        override fun onActivityPaused(activity: Activity) {
           
        }

        override fun onActivityStopped(activity: Activity) {
            
        }

        override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {

        }

        override fun onActivityDestroyed(activity: Activity) {

        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.