【问题标题】:How to avoid having my foreground service stopped when on Battery/Power saving mode on Android M如何避免在 Android M 上的电池/省电模式下停止我的前台服务
【发布时间】:2016-04-28 18:22:28
【问题描述】:

在我的应用程序中,我正在启动一个前台服务,并带有流式传输音乐的通知,但是只有在 Android 6.0+ 上运行时才打开省电模式 (Nexus) 或省电模式 (Samsung) 时,前台服务会停止,所以音乐也停止了。

有没有办法让前台服务在省电模式下也不停止?电池/省电模式的行为是否与打盹模式相似?

【问题讨论】:

  • 为了清楚我测试的是哪种省电模式,它在 Nexus 5 上设置了省电模式(橙色状态栏
  • 其实前台服务好像没有停止,但是网络调用肯定被阻塞了。

标签: android streaming android-6.0-marshmallow foreground-service


【解决方案1】:

您可能遇到了一个已知错误: https://code.google.com/p/android/issues/detail?id=193802。有一个解决方法:https://android-review.googlesource.com/#/c/221708/,但它只进入 N(用于 nexus 设备)和 M MR1。

解决方法是创建一个单独的进程,通过使用 Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT 在单独的进程中启动服务来保持您的应用程序运行。

【讨论】:

  • 这与已启动的服务不同吗?
  • 我们为什么需要BIND_IMPORTANT?
【解决方案2】:

你有它。在这种模式下,通常会阻止电池密集型操作。您能做的最好的事情是确保在设备恢复正常运行时恢复正常运行。首先测试这是否自动发生;如果不是,使用电池 API 找出何时重新启动服务应该非常简单。希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多