WIFI framework

本文详细解析了Android系统中WifiService的实现机制,包括关键类如WifiService.java、WifiControl.java等的作用,以及AsyncTask、Handler、HandlerThread在WifiServiceImpl中的应用。探讨了AsyncChannel的连接过程和原理,为理解Android Wifi模块提供了深入视角。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

framework:

1. getSystemService(Context.WIFI_SERVICE)
mWifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);

2. AsyncChannel

    private synchronized AsyncChannel getChannel() {
        if (mAsyncChannel == null) {
            Messenger messenger = getWifiServiceMessenger();
            if (messenger == null) {
                throw new IllegalStateException(
                        "getWifiServiceMessenger() returned null!  This is invalid.");
            }

            mAsyncChannel = new AsyncChannel();
            mConnected = new CountDownLatch(1);

            Handler handler = new ServiceHandler(mLooper);
            mAsyncChannel.connect(mContext, handler, messenger);
            try {
                mConnected.await();
            } catch (InterruptedException e) {
                Log.e(TAG, "interrupted wait at init");
            }
        }
        return mAsyncChannel;
    }


关键的类:
WifiService.java ----WifiServiceImpl.java
WifiControl.java
WifiStateMashin.java

WifiServiceImpl中关键技术点:
AsyncTask: 
     class TdlsTask extends AsyncTask<TdlsTaskParams, Integer, Integer> {
     new TdlsTask().execute(params);

Handler: 
private class ClientHandler extends Handler {
private class WifiStateMachineHandler extends Handler {

HandlerThread:
HandlerThread wifiThread = new HandlerThread("WifiService");
wifiThread.start();
HandlerThread wifiStateMachineThread = new HandlerThread("WifiStateMachine");
wifiStateMachineThread.start();


可参考:
AsyncChannel的使用和原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值