通过AIDL进程间通信
来源:互联网 发布:淘宝的a3狗粮怎么样 编辑:程序博客网 时间:2024/06/07 19:23
AIDL只不过是一种简化代码书写的方法,进程间通信实际上是由binder机制实现,AIDL本身不具备进程间通信的功能。
通俗点来说,binder机制的使用:大家(客户端和服务端)都定义有相同的AIDL接口,你实现的那部分接口由我来调用,我实现的由你调用;
那如何实现方法的调用呢,本质来说就是将各自的对象传递过去(Service-->Client : onBind()返回的Binder转化为AIDL接口所属的实例;Client-->Service:client的实例作为参数传入由client调用的方法中)
//服务端//AIDL文件package com.leo.aidl;interface infa {methodInvokedByClient(Object o);methodInvokedByService();}//服务端Servicepublic class sv extends Service {//用于获得客户端创建的实例,从而调用由客户端实现的方法Object o;//实现infa接口的Binder类private Binder mBinder = new infa.Stub(){//实现methodInvokedByClientpublic void methodInvokedByClient(Object o){..,this.o = o, ..};//<span style="font-family: Arial, Helvetica, sans-serif;">client的实例作为参数传入由client调用的方法中</span><div></div>}//onBind返回mBinderpublic IBinder onBind(Intent intent) { return mBinder;} //调用由客户端实现的方法methodInvokedByService()o.methodInvokedByService();}
//客户端//AIDL文件package com.leo.aidl;interface infa {methodInvokedByClient(Object o);methodInvokedByService();}//客户端activitypublic class a extends Activity {Object o ;protected void onCreate(...) {//请求连接服务端bindService(.. , mConnection ,...);}private ServiceConnection mConnection = new ServiceConnection(){//onBind被调用后,系统会回调onServiceConnectionpublic void onServiceConnected(... , IBinder service){ //将Binder转化为infa的实现类对象infa i = infa.Stub.asInterface(service);//此时客户端就可以调用服务端的方法了,同时也将客户端定义的实例传输到了服务端i.methodInvokedByClient(o);}}//实现methodInvokedByServicepublic void methodInvokedByService() {...};}
1 0
- 通过AIDL进程间通信
- AIDL 进程间通信
- AIDL 进程间通信
- AIDL 进程间通信
- AIDL 进程间通信
- AIDL进程间通信
- AIDL:进程间通信
- AIDL进程间通信
- AIDL 进程间通信
- aidl 进程间通信
- AIDL进程间通信
- 进程间通信---AIDL
- AIDL进程间通信
- AIDL进程间通信
- Android入门:通过AIDL进行进程间通信
- Android入门:通过AIDL进行进程间通信
- Android通过AIDL实现下载进程通信
- AIDL进程间通信之AIDL
- day11—DAO
- 老罗Handler(21)下载图片,Runnable,Handler,Message
- UVa 10905 Children's Game
- Android 数据库升级中数据保持和导入已有数据库
- 【POJ 3368】Frequent values
- 通过AIDL进程间通信
- hdu 1907 John
- 技术剖析Potato提权原理
- DBCP数据库连接池的配置
- Trianglur Design--找规律
- 揭开异常工作的恶意文档的秘密
- 分页核心SQL
- poj 1651
- cocos2dx 定时器