AIDL

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);
                }});

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值