android开发之进程间通讯aidl

在实际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,这个接口中自己定义的什么方法就调用什么方法。

原理:

通过ibinder对象实现数据共享。在多进程中ibinder就可以理解成在一个公共的内存中;因为在两个工程中使用的是用一个aidl文件,在创建两个service时,分别在onbind方法中返回同一个adil文件创建的对象;然后在bindservice的时候,在onServiceConnected的方法中的Ibinder对象就是另一个进程实现的aidl接口的实现类对象;就可以调用了;

给service设置一个独立的进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值