为什么Android中的音乐服务从不受打盹模式的影响?
有谁能在技术层面向我解释一下,为什么音乐播放器的服务在屏幕关闭后会持续运行。为什么它从不受打盹模式的影响?我想创建一个类似的服务,但它应该连续每隔20秒执行一个特定的任务为什么Android中的音乐服务从不受打盹模式的影响?,android,android-service,foreground-service,android-wake-lock,Android,Android Service,Foreground Service,Android Wake Lock,有谁能在技术层面向我解释一下,为什么音乐播放器的服务在屏幕关闭后会持续运行。为什么它从不受打盹模式的影响?我想创建一个类似的服务,但它应该连续每隔20秒执行一个特定的任务 如果有人能解释这一点,我会很高兴。提前感谢。音乐播放器的服务作为“前台服务”运行 当与部分唤醒锁结合使用时,前台服务在很大程度上不受doze的影响: 如果应用程序在后台时需要创建前台服务: ContextCompat.startForegroundService() 在服务内部,将其升级到前台并通过调用以下命令发布通知:
如果有人能解释这一点,我会很高兴。提前感谢。音乐播放器的服务作为“前台服务”运行 当与部分唤醒锁结合使用时,前台服务在很大程度上不受doze的影响:
如果应用程序在后台时需要创建前台服务:
ContextCompat.startForegroundService()
在服务内部,将其升级到前台并通过调用以下命令发布通知:
startForeground()
从Android文档:
前台服务执行一些用户可以注意到的操作。例如,音频应用程序将使用前台服务播放音频曲目。前台服务必须显示通知。即使用户没有与应用程序交互,前台服务也会继续运行
通常,音乐应用程序会通过显示艺术家的图像、当前曲目和播放/暂停/回放/转发等媒体按钮,将前台服务通知从烦扰用户的“责任”更改为资产
前台服务通常不应用于定期安排的工作,因为它会大大缩短设备的电池寿命
相反,请尝试使用WorkManager
、JobScheduler
或Firebase Cloud Messaging
仅在必要时唤醒设备
但是,使用这些解决方案不可能每隔20秒“轮询”或运行代码。你真的需要找到一个解决“打瞌睡”问题的方法,而不是对抗它。每20秒运行一次的任务会很快耗尽电池电量。我知道,但这是根据业务使用案例,很好的解决方案,但中国OEM在一段时间后阻止workmanager,直到应用程序再次打开后才会运行。谢谢Elletlar。我尝试了wakelock的前台服务,但应用程序被终止。正常的前台服务可以工作,但计划的任务在屏幕关闭时暂停,并在屏幕打开时再次启动。目前,我正在使用带有计时器任务的前台服务定期运行任务