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
分享到:
相关推荐
Android多进程通讯AIDL传递Parcelable对象
Android的IPC与AIDL;详细描述了ipc,aidl的机制
aidl实现多进程通讯
Android Service讲解 和 aidl 实现
android studio下使用aidl接口调用服务中的函数,通过aidl接口实现自定义对象的传递
Android项目之AidlDemo(简单的aidl的例子)。AIDL是Android中IPC(Inter-Process Communication)方式中的一种,AIDL是Android Interface definition language的缩写。需要的小伙伴自请下载。
android aidl 本地和aidl通信,远端和aidl android aidl 本地和aidl通信,远端和aidl
android ipc之AIDL通讯服务端程序源代码,里面有同一应用跨进程通讯示例,可供参考
使用AIDL实现Android进程间通信,Demo包含Service,Client代码。
Android多进程通讯AIDL实现客户端回调
描述 :整理了下android中的aidl, 项目中主要是用作于Activity和Service之间进行跨进程的通信和调用,定义了几种基本类型的接口,其中涵盖了自定义参数类型的传递。 注意: 解压后有两个android程序,一个client端 ...
Android service服务、aidl接口demo Android service服务、aidl接口demo
Android下Aidl的使用,详细请参见博客:http://www.cnblogs.com/plokmju/p/android_Service_aidl_NormalType.html 和 http://www.cnblogs.com/plokmju/p/android_Service_aidl_CustomType.html
Android中AIDL的使用Demo。
Android例子源码音乐播放器aidl实现进程间的通讯
Android进程间通信AIDL技术讲解
android aidl service
android studio下使用aidl接口传递自定义对象.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android中AIDL的Binder连接池Demo。可通过该真实的实例来真正了解实际开发过程中AIDL的Binder连接池的使用。