如果我的应用程序正在运行,我按下主页按钮,应用程序进入后台.现在,如果长按home键并从最近的应用程序列表刷卡它杀死的应用程序,没有人像的事件onPause()
,onStop()
或者onDestroy()
被调用,而该过程被终止.因此,如果我希望我的服务停止,杀死通知和取消注册听众,我该怎么做?我阅读了不少文章和博客,但没有得到任何有用的信息,我没有找到任何有关它的文档.任何帮助,将不胜感激.提前致谢.
假设应用程序运行正常但用户强行停止或卸载它,如何检测?有没有办法做到这一点?编写另一个定期检查系统中是否存在旧应用程序的应用程序是否是一个好习惯?
三星Galaxy S6搭载Android 6.0.0和6.0.1
我的应用程序运行良好,代码分析显示没有内存泄漏.SmartManager显示该应用程序使用~40MB的内存.我杀了应用程序(使用"当前正在运行的应用程序"概述 - 不确定这是如何用英语调用的,对不起.手机左下角的键,显示所有正在运行的应用程序的微缩模型列表...) ,然后重新开始.
现在,SmartManager不再为我的应用程序显示~40MB的内存,但是......更多.50. 100. 400.它各不相同,但每次都在增长.过了一会儿,我的应用程序实际上崩溃了OutOfMemoryException
.有时甚至在尝试抛出OutOfMemoryException时"内存不足"......
我必须卸载并重新安装应用程序才能重置其内存消耗.同样的APK在我测试过的所有其他手机上都能正常运行(例如S5与Android 5.0).不知道造成这种情况的原因.不知道是什么可能会导致这!任何帮助/提示/建议......?
编辑:使用Android 6.0.1在S5上的行为相同,但在使用Android 5.0的S5上则不行!
Edit2:谢谢,所有贡献的人.我仍然没有一个我满意的答案,但提到了一些我会研究的想法.大多数人都专注于MemLeak问题,虽然这听起来很合理,但我想强调Android 4或5上没有泄漏,只有6个.(我还没有测试过7.)此外,泄漏只发生当我强行杀死应用程序时(我有时需要做以测试正确的关机和重新启动行为),并且只是没有连接调试器(这使得测试/调试此行为在后面是一种痛苦).
该应用程序启动一项服务作为绑定服务.绑定到应用程序上下文 - 根据文档应该在应用程序停止时自行清理.不幸的是,这个赏金的时间已经不多了.到目前为止,上述服务似乎是我问题的最可能的来源.因此,我将奖励Qamar赏金,因为他是第一个在评论和答案中都提到这一点的人.你们其他人,非常感谢你们,并投票赞成.
我有一个Android应用程序,即使在后台,该应用程序也可以连接到当前正在运行同一应用程序的周围设备。
为此,我使用WiF-Direct宣传我当前正在运行所述应用程序的事实。
因此,一旦该应用被终止,我需要停止对此进行宣传。
onDestroy()
无法使用,因为不能保证会被调用。onStop()
onPause()
由于该应用仍在运行,因此无法使用。我该如何实现?
当前,即使关闭或终止了该应用程序,该服务仍在发布。