Android Activity与Service的AIDL接口通讯
来源:互联网 发布:淘宝客定向计划公开 编辑:程序博客网 时间:2024/06/07 06:14
Android 中Activity与Service通信方式有很多种,其中AIDL是我比较偏爱的一种通讯方式。今天就在此处介绍一下AIDL接口的使用和主意事项。
首先介绍一下AIDL:Android Interface Definition Language,即Android接口定义语言。解决Android的进程间通信的主要且优异方法。在这里主要介绍使用方法、参数传递和自定义类型的使用。
一、使用方法
1.创建两个AIDL接口文件一个用作UI调用Service另一个用于Service回调UI;例如:CallService.aidl ServiceCallback.aidl
2.在CallService中声明如下两个方法:
void registerCallback(ServiceCallback callback); 用于UI注册ServiceCallback void unRegisterCallback(ServiceCallback callback); 用语UI注销ServiceCallback
3.在UI(Activity)中分别实现ServiceCallback的接口功能
例如在Acitivity中使用ServiceConnection初始化通信接口:
serviceConn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { callService = CallService.Stub.asInterface(service); try { callService.registerCallback(callback); } catch (RemoteException e) { Log.error(e); Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_SHORT).show(); return; } } @Override public void onServiceDisconnected(ComponentName name) { try { callService.unRegisterCallback(callback); } catch (final RemoteException e) { Log.error(e); Toast.makeText(MainActivity.this, e.toString(),Toast.LENGTH_SHORT).show(); return; } }};接下来实现ServiceCallback功能ServiceCallback callback = new ServiceCallback.Stub{……………………}4.在Service中实现private ServiceCallback callback;private final CallService proxy = new CallService.Stub(){ @Overridepublic void registerCallback(ServiceCallback callback) throws RemoteException { callback = callback; }@Overridepublic void unRegisterCallback(ServiceCallback callback) throws RemoteException { if(callback == callback ){ callback = null; }}和其它方法}@Override public IBinder onBind(Intent intent) { return proxy.asBinder(); }参数传递主意事项AIDL可以传递java原生数据类型int long String 等AIDL可以传递集合类的如List和Map,但是集合中的数据必须是原生数据类型或自定义的序列化的类型AID传递自定类型需注意必须序列化,序列化后还要在AIDL包下穿件一个生命文件,文件名与自定义类型的名称一致,路径名也要与自定义类型的文件所在路径名称一致,内容package x.x.x; parcelable 自定义类名;
0 0
- Android Activity与Service的AIDL接口通讯
- Android组件---Service,AIDL,Service与Activity之间的通信
- Android中Activity与Service的双向通讯
- Android Service 与Activity之间的通讯方式
- Activity与Service之间的通讯机制
- android service和activity的通讯
- Android Aidl Service 进程间通讯的学习
- 使用android中的AIDL让Service与Activity通信
- Android AIDL 与 Service
- Android开发中实现跨进程通讯的AIDL接口
- Android开发中实现跨进程通讯的AIDL接口
- Android开发中实现跨进程通讯的AIDL接口
- Android Service与AIDL的使用
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- [实例教程]使用android中的AIDL让Service与Activity通信(service回调activity)
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- 关于安卓屏幕划分的知识
- [LEETCODE] 268. Missing Number
- HDU 4458 Shoot the Airplane(计算几何or数学)
- linux gdb调试
- iOS多线程的使用
- Android Activity与Service的AIDL接口通讯
- Windows HelloWorld驱动应用
- 习题18 命名、变量、代码和函数
- pg源码阅读四
- er tong liulanqi chorme
- 剑指offer 33题 【时间空间效率的平衡】把数组排成最小的数
- jQuery插件记录 <三>使用$.fn添加jQuery对象方法中传递options给定默认值
- Ant安装
- HDU 1872 稳定排序