首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

android的wifi模块中AIDL的通信

2012-07-23 
android的wifi模块中AIDL的通讯? android系统中的wifi的前端显示在应用Settings中设计的(pakages/apps/Set

android的wifi模块中AIDL的通讯

? android系统中的wifi的前端显示在应用Settings中设计的(pakages/apps/Settings),在wifi的开启,关闭,扫描都需要后台的WifiService类来提供服务,Settings跟WifiService是运行在两个不同进程的程序,所以就需要到了AIDL(Android interface definiton lanugage)来实现进程间的通信,当然实现进程通信还有别的方式,比如广播,意图,还有文件,但考虑到实际需求 ? 要用前台Settings要实时的显示后台WifiService的状态,还是用AIDL合适

?

? ?在系统启动的时候,会启动一系列的服务,其中就有WifiService。

?

? ?现在分析启动wifi的这个过程的AIDL通讯

?

? ?在Settings应用中用WifiEnabler.java这个类来封装了,wifi的启动和关闭还有wifi状态的转换及显示 ?。在WifiEnable.java中点击CheckBox,会执行onPreferenceChange(),在该方法里执行mWifiManager.setWifiEnabled(enable) ?在WifiManager.setWifiEnabled()中执行mService.setWifiEnabled() ? ?,mService为AIDL通信接口的实例,是一个WifiService的实例,可以通过它调用WifiService服务的内定义的方法。

? ?mService是在取得WifiManager实例过程中调用ContextIpl.java类的getWifiManager()得到的 ??

WifiManager?mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

?

?

? ?写道

private WifiManager getWifiManager()
{
synchronized (sSync) {
if (sWifiManager == null) {
IBinder b = ServiceManager.getService(WIFI_SERVICE);
IWifiManager service = IWifiManager.Stub.asInterface(b);
sWifiManager = new WifiManager(service, mMainThread.getHandler());
}
}
return sWifiManager;
}

?

?

在WifiManeger的构造函数中,传递到WifiManger

?

?

?

?

?

热点排行