Android 服务无限期运行

2023-12-05

我注意到像 Skype 这样的应用程序使用的服务基本上是 24x7 运行,根本不会被杀死。您甚至无法使用任务杀手手动杀死它(您可以通过运行服务并杀死服务来杀死它们)。这是如何实施的?

我发现在 Android 2.3 中,我的服务在运行一段时间后就会被终止。即使我使用 START_STICKY 启动服务,onDestroy() 也永远不会被调用。然而,这在我的 2.1 设备上运行良好,即服务不会被终止。

Thanks


这是如何实施的?

根据 Skype 屏幕截图显示Notification图标,那么他们最有可能使用startForeground().

我发现在 Android 2.3 中,我的服务在运行一段时间后就会被终止。

这是完全正常的。

首先,大多数 Android 应用程序并不真正需要“基本上 24x7 运行”的服务。用户不喜欢这样的服务,这就是为什么任务杀手和运行服务屏幕以及操作系统中的自动终止逻辑存在的原因。服务应该“24x7”运行的唯一原因是是否每微秒都提供价值。 VOIP 客户端(例如 Skype)在等待来电时每微秒都会提供价值。大多数 Android 应用程序不符合此标准。

如果您的服务持续运行,但运行时间由用户控制(例如音乐播放器),startForeground()是一个很好的解决方案。

否则,我宁愿你找到一种方法来消除“基本上 24x7 运行”的服务,切换到用户可控的轮询系统,使用AlarmManager,因此您的服务通常不会在内存中,除非它正在提供价值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 服务无限期运行 的相关文章

随机推荐