Android 9.0 开机后打开Wifi流程和Wifi状态值的保存

您所在的位置:网站首页 安卓wifi关闭后自动打开 Android 9.0 开机后打开Wifi流程和Wifi状态值的保存

Android 9.0 开机后打开Wifi流程和Wifi状态值的保存

#Android 9.0 开机后打开Wifi流程和Wifi状态值的保存| 来源: 网络整理| 查看: 265

目录

引述

一、开机后打开Wifi开关的流程

二、Wifi开关状态值的保存逻辑

2.1 Settings.Global.WIFI_SAVED_STATE

2.2 Settings.Global.WIFI_ON

引述

       我们在Android系统关开机之后会发现Wifi仍然保持着上一次关机时的状态,而且是进入home界面之后Wifi就会自动打开。我们就会想Wifi开关状态是保存在哪里呢?又是谁去打开Wifi的呢?是Settings应用呢还是在Launcher呢;下面我们就简单分析Wifi开关状态值的保存逻辑和开机后打开Wifi的流程。

我们程序员逻辑一般都是先考虑功能的实现。所以我们先分析开机后打开Wifi的流程,看下是如何去恢复上一次的Wifi状态。

一、开机后打开Wifi开关的流程

WifiService在开机时就会被启动起来,它是在SystemServer在startOtherServices() 方法中启动的;

然后再调用了startBootPhase();

最后来到WifiSerice中的onBootPhase();

接着调用了checkAndStartWifi();

方法中是先执行isWifiToggleEnabled()获取之前的状态,然后根据获取的mPersistWifiState值再判断是否去打开WIFI开关。

我们再跟一下mPersistWifiState这个值的来源。

这里我们就看到了状态值是调用Settings.Global来进行获取保存的。保存的key值是Settings.Global.WIFI_ON。.

这里先总结一下大致流程:

系统开机后SystemServer启动WifiService。WifiService执行checkAndStartWifi()来恢复上一次的Wifi开关状态。如果获取到的会根据保存的Settings.Global.WIFI_SAVED_STATE和Settings.Global.WIFI_ON两个值来判断是否打开Wifi。

下面我们接下来再看下Settings.Global.WIFI_SAVED_STATE和Settings.Global.WIFI_ON这两个值的赋值流程。

二、Wifi开关状态值的保存逻辑 2.1 Settings.Global.WIFI_SAVED_STATE

这里的注释可以看出这个值用来当切换WiFi热点时保存相应当前Wifi状态。然后在开机后WifiService启动时读取使用它。

2.2 Settings.Global.WIFI_ON

我们直接全局搜索一下上面读取的这个key值Settings.Global.WIFI_ON。就会发现是在WifiSettingsStore这里类里面有调用。

我们再跟一下handleWifiToggled()这个方法,发现WifiServiceImpl里面有调用:

这里就看到了我们每次打开和关闭Wifi就会以Settings.Global.WIFI_ON为key值记录到系统中。下一次开机时启动WifiService再去读取这个值。

同时WakeupController中也有调用;

我们跟着enableWifi()继续走:

最后我们发现是在扫描的监听方法中onResults()中保存的Wifi状态值,到了这里我们就弄清了Wifi开关状态值的保存逻辑。

本篇分析到这里结束了,感谢您抽出宝贵的时间阅读本文,如有错误的地方欢迎提出一起讨论。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3