【问题标题】:Android Oreo, wifiManager.getScanResults() returns empty list in DozeAndroid Oreo,wifiManager.getScanResults() 在 Doze 中返回空列表
【发布时间】:2018-06-24 22:29:30
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    首先,有两种打瞌睡: 我们称它们为 Light Doze 和 Deep sleep doze。

    在您将手机放在桌子上没有充电的情况下几分钟后开始打盹,这种打盹会限制一些服务的访问。

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

    打盹模式只在手机不移动时出现,所以当手机移动时,不认为是打盹模式。

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

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

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

    • 使用JobDispatcher 创建将每 x 秒执行一次的作业并进行扫描。 jobDispatcher 在轻度打盹模式下仍然工作
    • 如果手机进入深度打盹,手机没有移动,因此您可以断定扫描将是相同的并且不必更新它,一旦手机退出打盹,您的工作将恢复。李>

    【讨论】:

      猜你喜欢
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 2021-04-14
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多