【问题标题】:Does a foreground service need a wake lockt to stay active after screen-off?前台服务是否需要唤醒锁才能在屏幕关闭后保持活动状态?
【发布时间】:2023-03-26 14:33:01
【问题描述】:

在不同的来源中,我读到前台服务需要唤醒锁才能在设备进入睡眠状态后保持活动状态。但是,当我通过启动前台服务并在拔下设备(在模拟器和真正的三星设备上)时关闭屏幕来测试它时,前台服务会继续运行。

屏幕关闭后前台服务是否需要(部分)唤醒锁才能保持活动状态?

【问题讨论】:

  • 您是否获得了更多相关信息?我在摩托罗拉 Moto E4 plus 上也看到了同样的情况。它一直在运行,所以我想知道 WakeLock 的目的是什么。即使您需要它,CPU 需要一直保持清醒以定期执行小段代码似乎很奇怪。

标签: android android-service wakelock android-wake-lock foreground-service


【解决方案1】:

根据我开发计时器的经验,答案是肯定的,尤其是在屏幕关闭时。

如果没有唤醒锁,前台服务将在几分钟内被杀死或暂停(在我的测试中为 2 ~ 10m)。有时,屏幕关闭时,代码不会执行,但前台通知仍然存在,代码只有在屏幕打开后才开始执行。这使得调试非常困难。如果测试设备来自中国制造商,这种情况更为常见(如果您的应用针对中国市场,前台服务 + 唤醒锁定 + 让用户将您的应用列入白名单似乎是唯一可靠的选择)。

如果您希望服务在屏幕关闭后继续运行,请使用唤醒锁。

【讨论】:

  • 这很奇怪,因为我已经在模拟器和我的 Galaxy Note 8 上进行了测试,并且在这两种设备上,如果没有唤醒锁,该服务永远不会被终止。我实际上启动了一个长期运行的前台服务,并在屏幕关闭且没有插入充电器的情况下保持它运行一夜,今天早上它仍在运行。
  • @FlorianWalther 我不想相信模拟器测试结果。仅供参考,我之前检查过一个音乐播放器应用,它既有前台服务又有唤醒锁。
  • 你能告诉我那个音乐播放器吗?此外,我将它作为前台服务进行了测试,在我的真实设备上没有唤醒锁,它运行了一整夜。我只是希望我能找到服务实际上被杀死的情况。根据我的测试,只有工作会被推迟。
  • @FlorianWalther 很抱歉,我很久以前做过那个测试并且已经忘记了音乐播放器的名字。您可能希望通过 adb 打开空闲或应用待机或其他东西来测试您的应用。但为什么工作被推迟不是问题?
  • 好吧,我试着掌握唤醒锁部分的窍门,但现在不管有没有唤醒锁,对我来说一切都一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 2022-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多