WifiStateTracker
来源:互联网 发布:mac笔记本怎么清理垃圾 编辑:程序博客网 时间:2024/06/05 02:54
在SystemServer.java中,在 SystemServer启动的时候,会生成WifiService和ConnectivityService的实例
try { Slog.i(TAG, "Wi-Fi Service"); if (FeatureConfig.INTEL_FEATURE_ARKHAM) { wifi = new ExtendWifiService(context); } else { <span style="color:#FF0000;"> wifi = new WifiService(context); } ServiceManager.addService(Context.WIFI_SERVICE, wifi);</span> } catch (Throwable e) { reportWtf("starting Wi-Fi Service", e); }…………………………………………………………………………try { Slog.i(TAG, "Connectivity Service"); <span style="color:#FF0000;">connectivity = new ConnectivityService( context, networkManagement, networkStats, networkPolicy); ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity);</span> networkStats.bindConnectivityManager(connectivity); networkPolicy.bindConnectivityManager(connectivity); wifiP2p.connectivityServiceReady(); wifi.checkAndStartWifi(); } catch (Throwable e) { reportWtf("starting Connectivity Service", e); }在ConnectivityService.java中构造函数ConnectivityService中创建DefaultNetworkFactory对象
public ConnectivityService(Context context, INetworkManagementService netManager, INetworkStatsService statsService, INetworkPolicyManager policyManager, NetworkFactory netFactory) { if (DBG) log("ConnectivityService starting up"); HandlerThread handlerThread = new HandlerThread("ConnectivityServiceThread"); handlerThread.start(); mHandler = new InternalHandler(handlerThread.getLooper()); mTrackerHandler = new NetworkStateTrackerHandler(handlerThread.getLooper()); if (netFactory == null) { <span style="color:#FF0000;">netFactory = new DefaultNetworkFactory(context, mTrackerHandler);</span> }。。。。。。。。}
在DefaultNetworkFactory.java中创建类WifiStateTracker对象
private static class DefaultNetworkFactory implements NetworkFactory { private final Context mContext; private final Handler mTrackerHandler; public DefaultNetworkFactory(Context context, Handler trackerHandler) { mContext = context; mTrackerHandler = trackerHandler; } @Override public NetworkStateTracker <span style="color:#FF0000;">createTracker</span>(int targetNetworkType, NetworkConfig config) { switch (config.radio) { case TYPE_WIFI: <span style="color:#FF0000;"> return new WifiStateTracker(targetNetworkType, config.name);</span> case TYPE_MOBILE: return new MobileDataStateTracker(targetNetworkType, config.name); case TYPE_DUMMY: return new DummyDataStateTracker(targetNetworkType, config.name); case TYPE_BLUETOOTH: return BluetoothTetheringDataTracker.getInstance(); case TYPE_WIMAX: return makeWimaxStateTracker(mContext, mTrackerHandler); case TYPE_ETHERNET: return (NetworkStateTracker) mContext.getSystemService(Context.ETHERNET_SERVICE); default: throw new IllegalArgumentException( "Trying to create a NetworkStateTracker for an unknown radio type: " + config.radio); } } }
ConnectivityService 的构造函数会创建 mWifiStateTracker,而WifiStateTracker会创建 WifiMonitor接收来自底层的事件。
WifiService和 WifiMonitor是整个模块的核心。WifiService负责启动关闭 wpa_supplicant、启动关闭 WifiMonitor监视线程和把命令下发给 wpa_supplicant,而 WifiMonitor则负责从 wpa_supplicant接收事件通知。
0 0
- WifiStateTracker
- Remove WifiStateTracker&nbs…
- Remove WifiStateTracker&nbs…
- Oracle加锁
- 面试总结
- 在Linux下判断系统当前是否开启了超线程
- 黑马程序员——IO流之IO包中的其他类
- CSerialPort类的使用
- WifiStateTracker
- 算法复杂度的计算
- LeetCode----Power of Two
- windows下安装redis(Redis服务端按照 非常简单)
- 一些l练习about Java
- span加display:block才能显示
- ThreadPoolExecutor使用简介
- 15年IT经验,如何从一无所有成为上市公司高层!
- nyoj--171--聪明的kk(动态规划--博弈)