这个问题的关键是:
当您的应用程序在任何情况下被杀死时,您必须了解您的应用程序是否可以接收任何其他回调.
Devunwired在这个问题中回答了以下答案:
Android应用程序在被杀时不会调用"onDestroy()"(ICS)
这将有助于您更多地了解这一点.
如果进程通过外部方式终止(即因内存原因而被终止或用户强制停止应用程序),您的应用程序将不会收到任何额外的回调.当您的应用程序进入应用程序清理的后台时,您将不得不处理您收到的回调.
finish()只有当用户从Activity按下BACK按钮时系统才会调用它,尽管应用程序通常会直接调用它来保留Activity并返回上一个Activity.这在技术上不是生命周期回调.
onDestroy()只有在调用时才调用Activity finish(),因此主要仅在用户点击BACK按钮时调用.当用户点击HOME按钮时,前景Activity仅通过onPause()和onStop().
这意味着Android不会向活动提供太多反馈,以区分用户回家与移动到另一个活动(来自您的应用程序或任何其他活动); 活动本身只知道它不再在前台.Android应用程序是一个松散的活动集合,而不是一个紧密集成的单一概念(就像你可能习惯在其他平台上一样)所以没有真正的系统回调可以知道你的应用程序作为一个整体被提出或移动的时间向后.
最后,如果它依赖于您的应用程序中的任何活动是否在前台的知识,我会建议您重新考虑您的应用程序架构,但根据您的需要,可能还有其他方式更友好的框架来实现这一点.一种选择是Service在应用程序内部实现绑定,每个Activity绑定在活动时(即在onStart()和之间onStop()).这为您提供的是能够利用绑定Service仅在客户端绑定的情况下生存的事实,因此您可以监视服务的方法onCreate()和onDestroy()方法,以了解当前前台任务何时不属于您的应用程序.
您可能还会发现Dianne Hackborn撰写的这篇文章有趣地介绍了Android架构以及Google认为应该如何使用它.
| 归档时间: |
|
| 查看次数: |
5087 次 |
| 最近记录: |