首页 > 系统 > Android > 正文

android开发之进程间通讯aidl

2019-11-09 14:45:04
字体:
来源:转载
供稿:网友

在实际android应用开发过程中,两个应用的独立进程之间的通讯,还有一个应用中的两个进程之间的通讯都是需要使用aidl技术来完成。(本期介绍android studio的aidl开发使用,没用使用studio开发的同学,赶紧转吧。)

AIDL:全程Android Interface Definition Language 安卓接口定义语言,它可以用于让某个Service与多个应用之间进行跨进程通讯,从而实现多个应用共用一个Service的功能。

本期介绍的是同一个应用中的两个独立进程,如果两个应用,两个进程之间通讯,需要吧aidl文件夹copy到另个工程中,然后通过隐士方法启动service就可以了,原理都是相同的。核心步骤代码如下:

1.首先创建一个项目工程,点击src右键---》AIDL---》aidl文件。创建aidl文件

aidl文件内容
package com.zxq.zjctx;interface IMyAidlInterface {    void sservice();}
2.创建完成之后,build一下,不行就重启一下studio,然后写自己的service文件,在Service类中创建ibander对象并返回
		
@Override	public IBinder onBind(Intent intent) {		Log.e("))))->","onBind");		return mIBinder;	}	PRivate IBinder mIBinder = new IMyAidlInterface.Stub() {        @Override	public void sservice() throws RemoteException {	stopservice();//要调用的方法。	     }	};
给service设置一个独立的进程。
<service            android:name="service.MyService"            android:process="com.zxq.zjctx.dulijincheng"            />
3.  在启动service的类中执行下面的代码,拿到那个接口,通过接口去掉用
Intent intent=new Intent(this,MyService.class);                startService(intent);                bindService(intent,new MyserviceConnect(), Context.BIND_AUTO_CREATE);                        public class MyserviceConnect implements ServiceConnection {                    @Override                    public void onServiceConnected(ComponentName componentName, IBinder iBinder) {                        iMyAidlInterface = IMyAidlInterface.Stub.asInterface(iBinder);//通过这个对象去掉用方法。                                }                    @Override                    public void onServiceDisconnected(ComponentName componentName) {                    }                 }
4.调用传递过来对象ImyAidlInterface,这个接口中自己定义的什么方法就调用什么方法。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表