Android 9.0 WifiService启动流程

本文主要通过代码的执行流程简单的分析了WifiService的启动过程。

目录

1. WifiService的启动简单时序图表示:

2. WifiService代码执行流程

SystemService.java

SystemServiceManager.java

WifiService.java

WifiServiceImpl.java


1. WifiService的启动简单时序图表示:

接下来看下具体的代码实现逻辑:

2. WifiService代码执行流程

SystemService.java

路径:frameworks/base/services/java/com/android/server/SystemServer.java

WifiService是在SystemServer.java的 startOtherServices() 方法中启动的,代码如下

SystemServiceManager.java

路径:frameworks/  base/services/core/java/com/android/server/SystemServiceManager.java

在上面方法中,使用 Constructor constructor = serviceClass.getConstructor(Context.class);

service = constructor.newInstance(mContext);

构造了一个WifiService的实例,然后使用mServices.add(service);向系统注册WifiService,并调用WifiService的onStart方法。

WifiService.java

路径:frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiService.java

在构造方法中新建了一个WifiServiceImpl实例,它是Wifi管理服务真正的实现者,在前面的WifiService启动过程中调用了WifiService的onStart方法;在onStart方法中发布了Wifi服务,具体的发布代码如下:

分析到这里就可以看出WifiServiceImpl才是真正的WifiService。我们接着看下WifiServiceImpl的构造方法中执行了哪些操作。

WifiServiceImpl.java

路径:frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java

在这个方法中进行了大量的实例化对象来管理WIFI的各个功能:

mTrafficPoller,用来查询流量统计信息比通知给客户端的。

mWifiStateMachine ,Wifi状态机,它定义了wifi的很多状态,通过消息驱动状态的转变。

mPowerManager ,用于wifi的电源管理。

WifiStateMachineHandler,用于发送和处理wifi状态机相关的消息。

mWifiController,是另一个状态机,它和mWifiStateMachine 不同,mWifiStateMachine 表述wifi具体的状态,比如supplicant启动/关闭状态,driver启动/关闭状态等,mWifiController 则更高一级的控制wifi设备的开关状态,wifi热点的开关状态等。 在状态机中的消息处理中完成驱动的加载或者启动supplicant等。

WifiService的启动流程分析到这里就基本结束了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值