Android中的AboutToQuit信号/事件

时间:2017-11-11 12:27:23

标签: java android java-native-interface kotlin android-event

我是JavaAndroid的新手,我来自Qt/C++背景。在Qt中,有一个QCoreApplication对象代表整个应用程序,当这个对象被销毁时,应用程序就会死掉。在Qt QCoreApplication上有一个QCoreApplication::aboutToQuit的信号aboutToQuit,当应用程序处于即将关闭的过程中时会发出该信号。如果您需要,这非常方便,例如:在应用程序关闭之前将设置数据保存到磁盘。

我的问题:是否有类似SDK的机制,当Android应用程序即将关闭时,您可以通过该机制获得通知?

修改

我想在 nPn 回答后对我的问题做一些补充。我们不能依赖Android Activity Life Cycle因为我们正在开发的库/ SDK中需要这些信息。因此,我们希望在使用我们的库/ SDK的应用程序关闭时收到通知。

我们正在为Android个应用中的某些客户开发SDK。如果这样还不够,此C++ SDK也会在后台使用原生 JNI,并通过/blog/index.html界面与其联系。

最终目标是通过C ++通知应用程序在Android中被销毁。在Android中拥有一个事件/信号就足够了,因为我们可以将信息转发给C ++。

作为简历,图层是:Android App - >自定义Android SDK - >原生C ++ SDK

如果有不清楚的地方,我会进一步编辑问题

2 个答案:

答案 0 :(得分:2)

查看Android活动生命周期here

Android工作的方式不是接收您实现/覆盖一个或多个生命周期方法的信号,而是在不同阶段调用。要进行设置,您可能需要使用onPause()

还有应用程序级别的回调,以及注册自己的回调的能力,但这些都与生命周期有关。

如果您的问题是您不希望应用程序开发人员必须将代码添加到生命周期方法中,那么在调用超类方法之前/之后,您始终可以选择子类化并添加自己的代码。

答案 1 :(得分:1)

我刚刚阅读了一些最新的发展(我最近没有做过太多的Android编程,想要了解有关新推荐架构的更多信息)。

当我读到以下内容时,我几天前就想到了这个问题。

  

生命周期感知组件执行操作以响应更改   另一个组件的生命周期状态,例如活动和   片段。这些组件可以帮助您更好地组织和组织   通常更轻量级的代码,更容易维护。

     

一种常见的模式是实现从属的动作   生命周期中的组件活动和片段的方法。   但是,这种模式会导致代码组织不畅   错误的扩散。通过使用生命周期感知组件,您   可以将依赖组件的代码移出生命周期方法   并进入组件本身。

我认为如果库中的某些组件可以实现LifeCycleObserver接口,则不需要依赖于Activities,Fragments等中的回调,而是可以观察自己对象中的更改并做出反应相应

例如,如果您创建一个实现LifecycleObserver的类,例如此。

class LifeCycleMonitor(private val lifeCycleOwner: LifecycleOwner) : LifecycleObserver {

    init {
        lifeCycleOwner.lifecycle.addObserver(this)
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onDestroyEvent() {
        println("activity was destroyed")
    }
}

然后在一个LifecycleOwner的对象(例如Activity)中实例化该类,将调用使用相应事件注释的方法。

class MainActivity : AppCompatActivity() {

    private val lifeCycleMonitor = LifeCycleMonitor(this)

}

请注意,还有一个 ProcessLifecycleOwner可能更接近您要查找的内容,因为它涵盖整个应用,而不仅仅是给定的活动或片段。