如何获取应用程序进入后台或用户锁定屏幕然后返回应用程序时触发的回调

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

我需要一个回调,只要用户切换应用程序并返回,或者锁定设备然后解锁它,就会触发该回调。我无法使用

onPause
onResume
,因为即使用户导航到另一个活动并返回,它也会被触发,这不是必需的。 理想情况下,如果我有一个活动架构,
onResume
就可以工作,但由于我有多个活动,即使我从另一个活动返回,它也会触发。

我无法使用

onPause
onResume
,因为即使用户导航到另一个活动并返回,它也会被触发,这不是必需的。

android kotlin android-activity onresume onpause
1个回答
0
投票

我最终创建了一个自定义 ActivityLifecycleCallbacks 侦听器,然后将其注册到我的应用程序的

onCreate
方法中。

class AppLifecycleCallbacks : Application.ActivityLifecycleCallbacks {

    private var activeActivities = 0
    private var shouldTriggerCallback = false

    override fun onActivityCreated(p0: Activity, p1: Bundle?) {
    }

    override fun onActivityStarted(p0: Activity) {
        activeActivities++
    }

    override fun onActivityResumed(p0: Activity) {
        if (wasDeviceLocked) {
            // Trigger the callback here
            shouldTriggerCallback = false
        }
    }

    override fun onActivityPaused(p0: Activity) {
    }

    override fun onActivityStopped(p0: Activity) {
        activeActivities--
        if (activeActivities == 0) {
            // App went to background
            shouldTriggerCallback = true
        }
    }

    override fun onActivitySaveInstanceState(p0: Activity, p1: Bundle) {
    }

    override fun onActivityDestroyed(p0: Activity) {
    }
}

我的应用程序.kt

class MyApp : Application() {

    override fun onCreate() {
        super.onCreate()
        registerActivityLifecycleCallbacks(AppLifecycleCallbacks())
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.