当我的应用程序被杀死时,我想执行一些操作。
可以使用哪种方法?我正在开发 Android 5.0。
最佳答案
这个问题的关键是:
you must understand your application whether can receive any additional callbacks when your application being killed in any kinds of situation.
Devunwired回答了以下答案在这个问题中:
Android app doens't call "onDestroy()" when killed (ICS)
这将帮助您更多地理解这一点。
如果进程通过外部方式终止(即由于内存原因被终止或用户强制停止应用程序),您的应用程序将不会收到任何额外的回调。当您的应用程序进入后台进行应用程序清理时,您将不得不处理收到的回调。
finish()
仅当用户从您的 Activity 中按下 BACK 按钮时,系统才会调用它,尽管它通常由应用程序直接调用以离开 Activity 并返回到前一个 Activity。这在技术上不是生命周期回调。onDestroy()
仅在调用 finish()
时才会调用 Activity ,所以主要只有当用户点击 BACK 按钮时。当用户点击HOME键时,前台Activity只经过onPause()
和 onStop()
.这意味着 Android 不会为 Activity 提供太多反馈来区分用户回家与移动到另一个 Activity(来自您的应用程序或任何其他应用程序); Activity 本身只知道它不再处于前台。 Android 应用程序更像是一个松散的 Activity 集合,而不是一个紧密集成的单一概念(就像您在其他平台上可能习惯的那样),因此没有真正的系统回调可以知道您的应用程序何时 整体已被向前或向后移动。
最后,我会敦促你重新考虑你的应用程序架构,如果它依赖于你的应用程序中的任何 Activity 是否在前台的知识,但根据你的需要,可能还有其他对框架更友好的方法来实现这一点。一种选择是实现绑定(bind)
Service
在您的应用程序内部,每个 Activity
在 Activity 时绑定(bind)(即在 onStart()
和 onStop()
之间)。这为您提供的是利用绑定(bind) Service
的事实的能力。只要客户端绑定(bind)它,它就会存在,因此您可以监视 onCreate()
和 onDestroy()
方法服务 知道当前前台任务何时不属于您的应用程序。您可能还会找到 this article由 Dianne Hackborn 撰写,有趣的是更详细地介绍了 Android 架构以及 Google 认为应该如何使用它。
关于Android 应用程序终止事件捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325035/