gpt4 book ai didi

java - Android Oreo,wifiManager.getScanResults() 在 Doze 中返回空列表

转载 作者:行者123 更新时间:2023-12-02 11:05:19 28 4
gpt4 key购买 nike

当设备进入打瞌睡模式时,我遇到了 wifiManager.getScanResults() 在 Oreo (API26) 上返回空列表的问题。在进入打瞌睡之前,以及在早期的 API 版本上,一切正常(我得到了 ScanResults 列表)。

我在前台服务中经常调用此方法,每分钟一次。

我该如何处理这个新 Android 的行为?

欢迎任何提示甚至代码示例。

最佳答案

首先,打瞌睡有两种:我们将它们称为轻度打瞌睡和深度 sleep 打瞌睡。

当您将手机放在 table 上且未充电的情况下几分钟后,就会开始轻微打瞌睡,这种打瞌睡会限制对许多服务的访问。

深度 sleep 在 20 到 30 分钟没有移动(并且仍然不充电)后开始,并将手机的使用量降至最低,它会因一些通知和来电而被唤醒。

打瞌睡模式仅在手机未移动时出现,因此当手机移动时,不被视为打瞌睡模式。

对于您的问题,它与 Android 8 有关,当应用程序不在前台时,它会终止后台服务。

对于您的问题,您的后台服务将在几分钟后被终止。定位服务将无法访问,因此您将无法进行 WiFi 更新。(这里的答案是:不要与打瞌睡模式作斗争,你会失败的)。

因此,如果您想在应用程序被终止或屏幕关闭时获取 wifi 扫描的更新:

  • 使用 JobDispatcher创建一个每 x 秒执行一次的作业并获取扫描。 jobDispatcher 在轻度打瞌睡模式下仍然工作
  • 如果手机进入深度瞌睡状态,则手机不会移动,因此您可以断定扫描结果将是相同的,无需更新,一旦手机退出瞌睡状态,您的工作就会恢复。<

关于java - Android Oreo,wifiManager.getScanResults() 在 Doze 中返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51014480/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com