设备进入打ze模式时,wifiManager.getScanResults()在奥利奥(API26)上返回空列表时出现问题。在进入Doze之前,以及在较早的API版本上,一切正常(我得到了ScanResults的列表)。

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

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

欢迎任何提示或代码示例。

最佳答案

首先,有两种打ze睡:
我们称它们为“轻打ze睡”和“深度睡眠打ze”。

轻打ze睡会在您离开手机并在桌上不充电后几分钟开始,此打will睡将限制您使用多种服务。

深度睡眠打ze会在20到30分钟后开始移动而不会移动(并且仍不充电),并将手机的使用率降至最低,它会在收到一些通知和电话时醒来。

打ze模式仅在手机不移动时出现,因此当手机移动时,不将其视为打ze模式。

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

对于您的问题,您的后台服务将在几分钟后被终止。
位置服务将无法访问,因此您将无法获得wifi更新。
(这里的答案是:不要打mode睡模式,您会放松)。

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


使用JobDispatcher创建将每隔x秒执行一次的作业,然后进行扫描。在轻打ze睡模式下,jobDispatcher仍然可以工作
如果电话进入深度打ze状态,则电话不会移动,因此您可以得出结论,扫描将是相同的,并且不必更新扫描,一旦电话退出打ze状态,您的工作将恢复。

10-04 10:07