android AIDL 总结

来源:互联网 发布:sql 删除数据表字段 编辑:程序博客网 时间:2024/05/18 00:53

AIDL用途:进程间通信。

总结:

1.创建aidl文件,命名为IMyAidl.aidl。所在包名:com.android.my.aidl

2.eclipse自动生成IMyAidl.java。里面包含自己写的接口,还有系统自动生成的用于进程间通信的大段代码。

3.创建一个类,这个类是主要功能实现类,可以命名为MyServiceImpl.java继承IMyAidl.Stub。Stub是Binder的派生类。

4.建立一个service,这个service是用来让其他进程绑定的。在这个service的onBind()方法里,返回MyServiceImpl的实例。

5.在服务端的Manifest中,添加4中service的元素,其中Intent-filter里action添加 <action android:name="com.android.my.aidl.IMyAidl"/>



6.把上边IMyAidl.aidl连同包一同拷贝给Client端

7.在Client端有有一个activity(这里简单举例为单向通信),它需要通过bindService方法和service绑定,目的是“获得”service的Binder,进而调用接口实现方法。

    bindService(new Intent("com.android.my.aidl.IMyAidl"), new ServiceConnected(){.... ...... .....}, Context.BIND_AUTO_CREATE)


在 ServiceConnected的回调方法中,传回的IBinder 要赋给成员变量IMyAidl mMyAidl= IMyAidl.Stub.asInterface(IBinder)  //mMyAidl其实是服务端的一个代理proxy.


到此:C/S连接完毕,客户端可以访问服务端功能。

能够使用AIDL,只是说明可以实现进程间通信的功能。但是究其具体机制,还需要进一步的研究Binder源码。



0 0
原创粉丝点击