AIDL学习

来源:互联网 发布:那个软件看书好 编辑:程序博客网 时间:2024/06/05 07:45

进程是操作系统分配给应用的一个单位,进程与进程间的数据是独立的。远程服务的概念就是调用者和服务不在同一个进程,一般情况下是无法调用的。这时候就要用到进程间通讯,其实就是操作系统的一块公共的内存空间。如信号量,消息队列,管道,消息邮箱,文件等。

google提供了AIDL ,安卓接口定义语言。

首先上一篇说道服务和调用者之间有一个中间者,他实现了调用者需要调用服务的方法的接口。

绑定远程服务调用方法的步骤:
1.在服务的内部创建一个内部类 提供一个方法,可以间接调用服务的方法
2.把暴露的接口文件的扩展名改为aidl文件 去掉访问修饰符 public
private class MiddlePerson extends IMiddlePerson.Stub{}  IPC的子类
3.实现服务的onbind方法,返回的就是中间人 IMiddlePerson
4.在activity 绑定服务。bindService();
5.在服务成功绑定的时候 会执行一个方法 onServiceConnected 传递过来一个 IBinder对象
6.IMiddlePerson.Stub.asInterface(binder) 调用接口里面的方法。


远程服务和调用者都必须有一样包名路径的aidl文件,他会在gen里生成一个名字一样的.java文件,这个文件里就有Stub这个子类。

0 0
原创粉丝点击