【问题标题】:Doze Mode/App Standby During Audio Playback音频播放期间的打盹模式/应用程序待机
【发布时间】:2016-02-16 17:10:16
【问题描述】:

我注意到我的音频流应用在 Android 6.0 设备上存在问题。音频流是通过 HLS 通过网络连接完成的。音频播放发生在具有活动通知的前台服务中。我注意到的是,当应用程序进入打盹模式/应用程序待机时,wifi 连接丢失并且播放暂停。我的服务在前台,并且有一个活动通知,根据文档,应该使我的应用程序不被中断。我还获得并维护了一个 Wifi Lock。我已经阅读了有关将我的应用列入白名单的信息,但是像 Spotify 这样的应用不需要任何特殊权限来避免这个问题。有什么想法或建议吗?

【问题讨论】:

  • 你能找到解决办法吗?我在 Android 6.0 上的音频流应用程序也面临同样的问题,我也获得了 Wakelock 和 Wifilock,但是当 Doze 发生时,音频流停止。有什么想法吗?
  • 目前没有解决方案,如果我找到了会更新。请做同样的@user669231
  • 好的,确定会确认我是否找到解决方案?您是否还可以确认音频停止多长时间后(意味着手机进入打盹状态多长时间?)。几分钟后,我的用户一直在抱怨。但是不应该在很长一段时间后打瞌睡……可能是一个小时左右?
  • 如果我使用调试器工具打瞌睡模式需要几分钟,否则我看到它发生在大约小时标记左右几分钟。
  • 好的。我在 Android 6.0 设备中观察到的一个新问题与省电模式有关。几分钟内抱怨音频停止的用户处于省电模式。这是我也可以重现的问题。在 Lollipop 设备中,省电模式似乎并没有停止数据,但在 Marshmallow 中,这是一个主要问题。只是想提醒您,以防您可能不知道

标签: android android-wifi android-6.0-marshmallow android-doze-and-standby


【解决方案1】:

推荐的解决方案是使用单独的进程,一个用于音频播放,一个用于 UI。 See this long thread for lots of details

这是 Hackborn 女士的相关部分:

...让您的前台服务在与活动不同的进程中运行。据我所见,这将正常工作。我很想看看你是否在那里得到了想要的行为。

这实际上也是我们针对这种情况推荐的做法——如果您有一个长期运行的前台服务,它应该与活动处于单独的进程中,因此它不会强制使用与活动相关的所有内存待在身边。 (这也是这个 bug 得以解决的原因,我们所有的 [Google] 应用程序都使用这种模式。)

【讨论】:

  • 嗨@dhaag23 感谢您的回复。我已经尝试过了,但我的应用在 6.0 设备上仍然失去 wifi 连接,但在 6.0 之前的设备上运行良好。
  • 查看这个关于谷歌修复的线程。也许这是你的情况? code.google.com/p/android/issues/detail?id=193802
  • 嗨@dhaag23 我可以在线程末尾看到一些建议的解决方案“我发现的最佳解决方法是在单独的进程中打开另一个带有唤醒锁的前台服务,这个进程没有活动,没有接收器等。这确保了唤醒锁被持有”有没有人尝试过这个解决方案,它有效吗?
  • @user669231 是的,我已经尝试过了,在我有限的测试中效果很好。绑定到服务时,请确保使用 BIND_AUTO_CREATE | BIND_IMPORTANT 标志。这与我原来的帖子实际上是一回事,即双进程解决方案,但在错误修复在 M MR1 和 N 中传播之前,这是一个 hack。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 2017-01-12
  • 2014-12-15
  • 1970-01-01
相关资源
最近更新 更多