应用程序中未调用 Lifecycle.Event.ON_DESTROY

Coo*_*ind 5 android application-lifecycle

我想在用户退出应用程序时调用一些方法(请参阅12获取帮助)。

class BaseApplication : Application(), LifecycleObserver {

    override fun onCreate() {
        super.onCreate()

        // Register observer.
        ProcessLifecycleOwner.get().lifecycle.addObserver(this)
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) 
    fun init() {
        println("*** called onCreate()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START) 
    fun LibOnStart() {
        println("*** called onStart()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP) 
    fun LibOnStop() {
        println("*** called onStop()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) 
    fun LibOnResume() {
        println("*** called onResume()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) 
    fun LibOnPause() {
        println("*** called onPause()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) 
    fun cleanup() {
        println("*** called onDestroy()")
    }
}
Run Code Online (Sandbox Code Playgroud)

这些事件都会被触发,除了ON_DESTROY

I/System.out: *** called onPause() of Activity
I/System.out: *** called onStop() of Activity
Run Code Online (Sandbox Code Playgroud)

可能Application没有从内存中清除。如果我从最近的列表中滑动应用程序或强制停止,它不会触发destroy事件。也许这些事件在Activity. 如何捕获destroy事件Application

art*_*art 8

文件声称

您可以将此 LifecycleOwner 视为所有 Activity 的组合,但 Lifecycle.Event.ON_CREATE 将调度一次,而 Lifecycle.Event.ON_DESTROY 将永远不会调度。

所以在应用中没有办法处理onDestroy

或者,您可以尝试使用类onTaskRemoved的回调Service来捕获应用程序从最近使用的应用程序中删除的时刻。