安卓系统多久扫描一次WiFi?

6

Android系统多久会扫描Wi-Fi?

有以下两种情况:

当设备连接到网络时

或者

当设备没有连接到任何网络时。

这个扫描频率在不同的Android操作系统版本中是否有所不同?

是否有人知道这些信息?


它与Android操作系统版本有什么不同吗?你想说什么? - Kushal
每个Android操作系统版本都有一个处理WiFi连接的过程。扫描间隔时间可能不同。我还想知道,是否有任何监听器来监听扫描WiFi的结果。 - giangqaz
4个回答

3

Android系统多久扫描一次Wi-Fi?

这取决于应用程序实现和Android操作系统版本(所以是的,是对你第二个问题的答案)。

让我们更详细地了解:

您可以使用WifiManager的实例通过startScan()方法启动wifi扫描。这可能允许您启动所有想要的扫描,但会非常快地耗尽电池。

因此,从Android 8.0(API 26)开始对扫描频率进行了限制。

使用WifiManager.startScan()进行扫描的频率受到以下限制。

Android 8.0和Android 8.1:

每个后台应用程序在30分钟内只能扫描一次。

Android 9及以上:

每个前台应用程序可以在2分钟内扫描4次。这允许在短时间内进行一系列扫描。

所有后台应用程序组合起来每30分钟只能扫描一次。

参考文献


1

Android系统扫描WiFi:

1.如果设备启用了WiFi且未连接到任何网络,则会扫描可用网络。

2.如果设备已连接到网络,则系统将在用户请求时扫描可用网络(即当用户点击扫描按钮时)。


系统还会在应用程序需要时进行扫描,例如:((WifiManager) myActivity.getApplicationContext().getSystemService(Context.WIFI_SERVICE)).startScan() - Julien Kronegg

1
WiFi扫描基本上取决于硬件制造商-以及可能正在运行的一些用户设置和其他应用程序(其他应用程序可能会请求扫描WiFi网络)。因此,实际上并没有“标准扫描时间”来进行WiFi扫描。
这里有一个很好的参考资料,讨论了WiFI扫描之间的时间间隔(基本上是说您应该与用户核实是否想要“尽可能频繁地扫描”选项,或其他选项...) 在Android上每次WiFi扫描之间应该使用什么间隔? 除非您的应用面向开发人员,否则您应该使用衰减算法,比如每5秒检查一次,然后是10、20、40、80、160……等等,直到达到可接受的时间范围为止(例如5分钟-300秒;或1小时-3600秒)。然后还要监视其他事件,如电话休眠/唤醒或应用程序启动。利用它们来进行WiFi轮询,并尝试连接和重新启动衰减算法方法。

谢谢您的回答,非常有用。 我在Wifi设置高级选项中看到了一个选项: “网络通知(每当有公共网络可用时通知)” 是否有该事件的监听器? - giangqaz

0

从我在LG G2(Android 5.0.2)上的实验中,以下情况会扫描wifi:

  1. 当位置功能被禁用时
    • 每次从睡眠模式唤醒时
    • 激活wifi时(手动或编程方式)
    • 当wifi已启用但设备未连接到wifi网络时,大约每2分钟扫描一次
  2. 当位置功能启用时:这取决于已注册到locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,minTime,...)的应用程序。当指定minTime为0毫秒时,网络扫描每20秒执行一次。

应用程序“Wifi扫描间隔”显示最小/最大/平均wifi扫描频率因手机制造商和型号而有很大差异。但这可能是由于安装的应用程序。基于此,我猜想上述规则对其他手机可能不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接