Android中实现不同应用进程间通讯
来源:互联网 发布:非洲网络用户 编辑:程序博客网 时间:2024/04/30 00:48
本文欢迎转载,以下为本人亲测,如有问题请留言,转载请注明:http://blog.csdn.net/wqmain/article/details/18264245
Android中实现不同应用进程间通讯,需要用到AIDL技术,以下为AIDL服务端和客户端实现步骤:
一、服务端:
1、在AndroidManifest.xml中定义的包路径下新建一个文件,扩展名为.aidl(如:IXxxService.aidl),系统会在gen中自动生成对应的.java文件(如:IXxxService.java)
2、在aidl文件中编写接口方法,语法同java区别不大。注意:方法参数支持java基本类型(int、long、boolean等)和(String、List、Map、CharSequence)
其它复杂类型需要自定义(实现Parcelable.Creator接口及其方法)。
3、在包路径新建一个继承 android.app.Service 的服务类,在该类中定义继承 IXxxService.Stub 抽象类的内部类并实现抽象方法,如:
public class XxxService extends Service {public class XxxServiceImpl extends IXxxService.Stub {//implements methods...} @Overridepublic IBinder onBind(Intent intent) {XxxServiceImpl impl = new XxxServiceImpl(); return impl; //必须返回 XxxServiceImpl 的实例}}
4、在AndroidManifest.xml中注册上面定义的服务
<!-- 注册服务 --> <service android:name="包路径.XxxService" > <intent-filter> <!-- 指定调用AIDL服务的ID --> <action android:name="包路径.IXxxService" /> </intent-filter> </service>
二、客户端
1、将服务端中自动生成的IXxxService.java文件拷贝到客户端工程,注意:文件所在包路径必须和服务端完全一致。
2、服务可以封装成帮助类调用,也可以直接在Activity中调用,后者如:
// Activity 中声明服务接口变量private IXxxService serviceInterface;// Activity onCreate()方法中创建ServiceConnection对象,并初始化serviceInterfaceprivate ServiceConnection serviceConnection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {// 获得AIDL服务对象serviceInterface = IXxxService.Stub.asInterface(service);}@Overridepublic void onServiceDisconnected(ComponentName name) {}};
// 绑定服务,AIDL_SERVICE_ID 为 "一、服务端 4、" 中提到的“指定调用AIDL服务的ID”
bindService(new Intent(AIDL_SERVICE_ID), serviceConnection, Context.BIND_AUTO_CREATE);
注意:在Activity 的 onDestory 方法中调用解除绑定服务的方法:unbindService(serviceConnection);
3、在按钮点击等事件中就可以调用服务中定义的方法了,如:serviceInterface.xxxMethod();
注意:服务端 XxxService 不能定义为单例的,否则无法调用
写的比较简单,当做技术资料备份吧......
1 1
- Android中实现不同应用进程间通讯
- android 不同进程间的调用 AIDL 实现通讯服务
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- (4.1.18.6)Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- EventBus 同一进程中不同组件间的通讯
- Android AIDl来实现进程间通讯
- 强制回收ImageView的bitmap
- 滚动ListView时图像顺序混乱
- C# Winform中如何实现获取当前用户的网络名和登录名【数据库操作】
- Ubuntu下安装GTK
- string.h的strcmp的性能比较
- Android中实现不同应用进程间通讯
- 批量导入excel入库
- 曝姚明当年未赴八一原因 替补大郅恐坐穿板凳
- SIZE AUTO和SIZE SKEWONLY在gather_table_stats时的区别
- uva 146 ID Codes
- JAVA RMI使用手册
- 笔记本连接投影仪常见问题及解决方案
- 过去&现在
- 希尔排序(Shell Sort)--学习(四)