Android 应用程序终止事件捕获

标签 android android-5.0-lollipop

当我的应用程序被杀死时,我想执行一些操作。
可以使用哪种方法?我正在开发 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/

相关文章:

java - 使用faceId/touchId的应用程序的安全性?它是如何工作的?

android - 将 Material Design Touch Ripple 应用于 ImageButton?

Android:WAITING来自对话框的用户输入?

android - 为什么EditText和NavigationIcon之间的宽度不相等

java - 为什么文本没有被共享?请查看详情

android - Android 中的 AlwaysOnHotwordDetector 示例

android - Action 栏 android L

android - 更新到最新的 appcompat 和支持库后出现 DexIndexOverflowException 问题

Android状态栏图标颜色

Android:向 TextView 添加一个额外的字符串,该字符串从数据库填充其内容