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

时间:2018-06-24 22:29:30

标签: java android android-8.0-oreo wifimanager android-doze

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

轻打do睡会在您离开手机几分钟后开始而没有在桌上充电时开始,此打limit睡会限制许多服务的访问。

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

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

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

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

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

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