我需要一个回调,只要用户切换应用程序并返回,或者锁定设备然后解锁它,就会触发该回调。我无法使用
onPause
和 onResume
,因为即使用户导航到另一个活动并返回,它也会被触发,这不是必需的。
理想情况下,如果我有一个活动架构,onResume
就可以工作,但由于我有多个活动,即使我从另一个活动返回,它也会触发。
我无法使用
onPause
和 onResume
,因为即使用户导航到另一个活动并返回,它也会被触发,这不是必需的。
我最终创建了一个自定义 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())
}
}