我能让 Android 应用在后台保持运行吗?

4
我目前编写了一个普通的Android应用程序(不是服务),其中包含定时器进行周期性检查。为避免服务和应用程序之间的沟通问题,我想知道是否有一种方法可以保持不再在前台的应用程序处于活动状态。 目前,当我“关闭”应用程序时,它仍然处于活动状态,直到Android操作系统决定杀死它。有没有办法避免这种杀戮 - 例如通过“onDestroy”中的某个命令或某个应用程序标志? 我的应用程序相当复杂,我不想实现服务,因为这会增加复杂性,特别是通信/绑定。有没有一个“简单的方式”,或者我真的被迫使用Service+App?也许有一个技巧可以注册应用程序以获得特殊的东西,这样Android操作系统在后台运行时就不会将其杀死。

编辑以更好地理解:如果用户想要的话,GUI可以进入后台(消失),所以我的问题不是如何使我的应用程序GUI永久保持在前台。我想要的只是定时器保持完整,而无需额外的服务。

提前感谢所有的想法!


我在这篇帖子中概述了如何实现:http://stackoverflow.com/questions/29799187/android-background-services-and-alarms/29800712#29800712。它使用了一个Service和一个handler。 - Kristy Welsh
3个回答

6
Android的操作系统具有不可预测性,并且市场碎片化,因此如果某些内容非常关键,不能保证100%会一直存在。但是,您可以冒险并取得相当大的成功。以下是有助于您的方法:
  1. 使用非常好的“最佳实践”来使您的字符串池和堆尽可能小,因为Android首先会关闭内存占用过多的应用(而且因为您热爱自己所做的工作)。
  2. 将持久属性添加到您的应用清单标签中。
  3. 为了真正帮助自己,运行一个服务或者作为一个服务运行,因为它们是长时间运行的进程,非常轻便(如果实现得好),Android最后才会关闭这些进程。
  4. 通过将其作为前台服务运行来提高服务的优先级。
这样做将增加Android不关闭您的应用程序的可能性。

1

我认为目前没有类似的东西可用。建议查看AlarmManager以进行定期任务 - 这可能意味着您不需要使用服务。


1
这个问题应该使用服务和闹钟来解决,就像这里建议的那样。 - Ashterothi

0
应用程序在后台可用只是安卓操作系统的缓存措施,以避免频繁使用的应用程序需要从头开始重新启动。如果您想要确保您的应用程序在后台运行,服务是正确的解决方案。这可能不是您想要的答案,但我不知道任何在缓存中保持活动的技巧,即使有,我也不会推荐使用它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接