1

我正在开发与 Voip 和 IM(聊天应用程序)相关的应用程序。直到 android OS 5.0 它运行良好,客户端也没有问题。但从 android OS 5.1.1 开始,我们面临着问题。

问题:

  • 如果应用程序处于前台并且设备进入睡眠模式,则它运行良好。
  • 如果应用程序处于后台并且设备在10 分钟后进入睡眠模式,所有服务都会自动停止。

测试:

  • 为了测试,我创建了一个计时器任务,每 1 分钟打印一次日志。所以当我关闭应用程序时(意味着应用程序是否在后台)

  • 直到android OS 5.0日志连续打印。

  • android OS 5.1.1开始进入睡眠模式后,10 分钟后不会打印日志。定时器任务正在停止

我的应用程序也面临同样的问题。

在做了一些研发之后,我开始了解打盹模式和应用程序优化。无论如何与停止在后台自动运行的服务有关。

如果是,任何人都可以让我知道如何克服这个问题。

4

1 回答 1

1

这是谷歌为防止不必要的电池使用所做的新事情。对于新版本,后台服务受到限制以延长电池寿命。android 服务消耗几乎与在前台运行的应用程序相同。因此,即使应用程序没有运行,它的服务也可能正在运行并使用内存和电池。

如果您必须使用任何类型的后台进程,请尝试使用Job Scheduler,这可能对您有用。

Job Scheduler根据我们在实现中提供的约束对任务进行分组并执行后台任务。这对最低 API 21 有一个限制

要支持较低版本,您可以使用API 9 支持的Firebase JobDispatcher 。

我个人更喜欢Firebase JobDispatcher

链接可帮助您了解有关调度程序及其实现的更多信息。

于 2017-07-04T06:08:10.047 回答