AIDL学习
2015-07-03 15:20
501 查看
进程是操作系统分配给应用的一个单位,进程与进程间的数据是独立的。远程服务的概念就是调用者和服务不在同一个进程,一般情况下是无法调用的。这时候就要用到进程间通讯,其实就是操作系统的一块公共的内存空间。如信号量,消息队列,管道,消息邮箱,文件等。
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这个子类。
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这个子类。
相关文章推荐
- HMailServer日记
- 多线程performSelectorOnMainThread
- 小作:brainfuck解释器
- git push error: RPC failed; result=22, HTTP code = 411
- launch failed.Binary not found.的解决方案之一
- 最严谨的校验email地址的正则表达式及各种语言对应版
- Linux系统调用--------wait() 与 waitpid()
- NDK toolchain对应ABI
- 2015华为软赛(七)——动作一
- error LNK2005: _DllMain@12 already defined in *.obj
- hibernate之constrained详解
- 解决SplitContainer控件残留虚线的方法
- copy一篇文章,主要看看 cookie 的 path 和 domain
- 如果想在main函数之前或main函数之后做一些工作
- 编译 xenomai3
- 重建ocr和vote的方法(客户aix掉电后故障)
- 最严谨的校验email地址的正则表达式及各种语言对应版
- Firefly带你回顾Maker Faire 2015的创客盛典
- 企业邮件系统的需求、隐患以及解决方法
- [git] How to solve “agent admitted failure to sign