使用强制停止时未调用Android-Service-ondestory()方法

使用强制停止时未调用Android-Service-ondestory()方法,android,Android,当我使用Running Services(运行服务)选项卡下的stop(停止)按钮停止服务时,将调用onDestroy()方法 但是当我强制停止应用程序时,onDestroy()永远不会被调用 对此有何解释 或者是一个解决方案,当强制停止时触发onDestroy() 谢谢 当您强制停止应用程序时,确实会发生这种情况-强制停止。没有警告,没有回调,只是停止了。整个进程将被终止,并且运行的组件(活动、服务等)都不会收到任何警告 绝对不能保证调用onDestroy()。将任何应用程序关键代码移动到on

当我使用Running Services(运行服务)选项卡下的stop(停止)按钮停止服务时,将调用onDestroy()方法

但是当我强制停止应用程序时,onDestroy()永远不会被调用

对此有何解释

或者是一个解决方案,当强制停止时触发onDestroy()


谢谢

当您强制停止应用程序时,确实会发生这种情况-强制停止。没有警告,没有回调,只是停止了。整个进程将被终止,并且运行的组件(活动、服务等)都不会收到任何警告

绝对不能保证调用
onDestroy()
。将任何应用程序关键代码移动到
onPause()
,在大多数情况下都会调用该代码。

从:

创建活动后,
onPause()
是保证在终止进程之前调用的最后一个方法<可能无法调用code>onStop()和
onDestroy()
。因此,您应该使用
onPause()
将关键的持久数据(如用户编辑)写入存储器


重申这一点,强制停止并不意味着优雅,也不意味着以关心的方式退出应用程序。如果每次应用程序完成时都必须运行关键代码,则当应用程序强制停止时,需要在
onPause()

中运行它,调用Process.killProcess(),但不调用onDestroy()函数。通过这个链接。你会知道的。

我假设您有要在
onDestroy()中执行的代码。
参考您的行:

“或者是在强制停止时激发onDestroy()的解决方案?”


服务
方法是您正在寻找的,当应用程序被强制停止时将调用该方法

回答得好。但是,问题是关于服务的,这些服务不暂停或没有onPause()方法。与其他组件相比,服务没有太多的生命周期。如果最后需要做一些重要的事情,可能可以编写服务以在工作时保存,并在重新启动时继续停止。或者,更好的办法是,避免让用户通过“行为良好”和尽可能短的时间运行来终止您的服务。:)如果您使用BIND_AUTO_CREATE在活动的onCreate()方法中启动服务,并在onDestroy()中从中解除绑定,那么情况会怎样?如果该活动被提前终止并且onDestroy()从未调用,则该服务将继续运行。我不确定您想做什么,但垃圾回收器可能会识别出此服务是孤立的,并在几分钟内将其删除。这是一个活动的文档-OP与服务有关。服务没有onPause()方法。请重新阅读问题。答案未提供问题中所问的相关信息。问题是在服务的上下文中,给出的文档链接是针对活动的。服务不起作用;不要有停顿和停止状态。不要认为那是真的。如果您强制停止应用程序,则不能保证调用onTaskRemoved()。当您的应用程序通过从最近的appsAnswer from@chetna被关闭时,将调用服务中的onTaskRemoved()。此回调仅在用户滑动以关闭应用程序时触发,或者它意味着从任务队列/最近的任务关闭应用程序。当应用程序被强制停止时,它不会启动。