Android 当我的应用程序被系统关闭时,它能收到通知吗?

Android 当我的应用程序被系统关闭时,它能收到通知吗?,android,Android,当我的android应用程序进入后台时,系统可能会关闭它以回收资源。我能检测到这个时刻并运行一些代码吗?发生时是否有任何通知(调用的方法)?实现onDestroy()活动的方法 参见正确答案是“否”。当Android想要关闭你的应用程序以回收资源时,它只会杀死你的进程。就这样。没有警告,没有回调,根本没有机会做任何事情。尝试从本机(NDK/JNI)库捕获SIGKILL。但是你将无法在信号处理代码中做任何有价值的事情;绝对不会回到Java世界。信号处理程序受到*nix规则的严重限制 你首先想要完成

当我的android应用程序进入后台时,系统可能会关闭它以回收资源。我能检测到这个时刻并运行一些代码吗?发生时是否有任何通知(调用的方法)?

实现
onDestroy()
活动的
方法


参见

正确答案是“否”。当Android想要关闭你的应用程序以回收资源时,它只会杀死你的进程。就这样。没有警告,没有回调,根本没有机会做任何事情。

尝试从本机(NDK/JNI)库捕获SIGKILL。但是你将无法在信号处理代码中做任何有价值的事情;绝对不会回到Java世界。信号处理程序受到*nix规则的严重限制


你首先想要完成的是什么?所有合理的清理通常在活动终止代码(
onDestroy()
)中执行。在大多数使用场景下,流程生命周期不应该是您关心的问题,因为它被明确地记录为不可预测。

我相信OP想要捕获流程关闭,而不是活动关闭。按“上一步”将关闭活动,但在内存不低的情况下保持应用程序运行。如果进程被Android终止,则不会对进程中的任何活动调用onDestroy()。他们就这么走了。没有任何警告。呸!顺便说一句:接受率很低,伙计。我试图保存对象状态,以便在下次启动活动时恢复它。目前,我通过序列化将其保存在onSaveInstanceState中。我不喜欢的是,每次我的活动从堆栈顶部移出时,对象都被序列化(按下后退按钮的情况除外)。所以我做了很多不必要的工作。我只想在进程终止时保存对象。不要保存到文件中,而是像Android建议的那样保存到捆绑包中。保存所述捆绑包(或将其保留在内存中)的规则由系统决定。一般来说,对系统进行二次猜测是一项有风险的工作。