1. AIDL 是用于 IPC 调用service,如果service和调用service的线程都在 一个进程 (apk所在的进程), 可以用 implentation bind service 方法
2. 实现remote clients 和service通讯 还可以用messenger 方法.
3. AIDL 相比 messenger 更复杂,扩展性更好
.aidl 文件需要开发者自己写,编译器会生成 Ixxxx.java 接口文件,该接口文件里面 有个abstract class stub, 这个stub class 开发人员需要自己实现,例如
public class WifiService extends IWifiManager.Stub {}
4 . 谁去调用wifimanager.java 的构造去 构造mService的 (一般情况下,apk是通过 (WifiManager)context.getsystemservice(SERVICE_WIFI) 获得WifiManger的实例)
用的是java 里面隐藏类的声明方法。
ContextImpl.java
registerService(WIFI_SERVICE, new ServiceFetcher() {
public Object createService(ContextImpl ctx) {
IBinder b = ServiceManager.getService(WIFI_SERVICE);
IWifiManager service = IWifiManager.Stub.asInterface(b);
return new WifiManager(ctx.getOuterContext(), service);
}});