android p wifi一直在扫描_Android Wi-Fi扫描机制(Android P)

本文详细介绍了Android P中Wi-Fi扫描的四种场景:1)亮屏且在Wi-Fi设置界面,扫描间隔10s;2)亮屏但不在Wi-Fi设置界面,采用二进制指数退避扫描,间隔20s到160s;3)灭屏且有保存网络时,已连接则不扫描,否则进行PNO扫描,间隔20s到60s;4)无保存网络时,每5分钟固定扫描。文章还解析了相关代码以说明扫描间隔的设置和调整机制。
摘要由CSDN通过智能技术生成

Android P的扫描场景可以归结为以下四种:

1、 亮屏情况下,在Wifi settings界面,固定扫描,时间间隔为10s。

2、 亮屏情况下,非Wifi settings界面,二进制指数退避扫描,退避:interval*(2^n), 最小间隔min=20s, 最大间隔max=160s.

3、 灭屏情况下,有保存网络时,若已连接,不扫描,否则,PNO扫描,即只扫描已保存的网络。最小间隔min=20s,最大间隔max=20s*3=60s

4、 无保存网络情况下,固定扫描,间隔为5分钟,用于通知用户周围存在可用开放网络。

正常扫描流程可以看我之前写的: wifi扫描流程梳理

1、 亮屏情况下,在Wifi settings界面,固定扫描,时间间隔为10s。

从 wifi扫描流程梳理 可以看到wifi扫描流程会走到WifiTracker的handleMessage函数中,我们看sendEmptyMessageDelayed,会发送一条扫描的信息,其中包含了WIFI_RESCAN_INTERVAL_MS,WIFI_RESCAN_INTERVAL_MS就是默认的扫描周期,可以看到系统设置的默认周期是10 * 1000,也就是10秒。

WifiTracker.java

private static final int WIFI_RESCAN_INTERVAL_MS = 10 * 1000;

public void handleMessage(Message message) {

if (message.what != MSG_SCAN) return;

if (mWifiManager.startScan()) {

mRetry = 0;

} else if (++mRetry >= 3) {

mRetry = 0;

if (mContext != null) {

Toast.makeText(mContext, R.string.wifi_fail_to_scan, Toast.LENGTH_LONG).show();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值