AndroidStudio的AIDL demo

建立两个module,一个是AIDL服务,另一个是客户端。
AS的module就相当于Eclipse里面的project,AS的project相当于Eclipse的Workspace。

一。服务端
1.建立模块module1
2.在module1工程下,在module1\src\main\下建立aidl文件夹,再建立一个和AndroidManifest里面包名一样的包,
module1\src\main\aidl\interview\cchen\module1,里面建立AIDL文件
路径方法必须这样,然后编译工程。
会在module1\build\generated\source\aidl\debug\interview\cchen\module1路径下,生成与AIDL对应的java接口文件。
这个Java文件时自动生成的,最好不要手动修改,想修改接口,直接修改AIDL文件即可。
3.实现AIDL的接口



public class Service1 extends Service {
private int mCount;
IMyAidlInterface1.Stub binder = new IMyAidlInterface1.Stub() {
@Override
public void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString) throws RemoteException {

}

@Override
public String getValue() throws RemoteException {
return mCount++ + " times";
}

@Override
public void clear() throws RemoteException {
mCount = 0;
}
};

public Service1() {
}

@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
return binder;
}
}



4.修改module1的gradle文件,第一行改为apply plugin: 'com.android.library',作为一个库工程,同时去掉applicationId。

二。客户端
1.建立模块module1_client
2.修改module1_client的gradle文件,在dependencies 中添加compile project(':module1'),引用module1
3.可以通过AIDL和Service1通讯


private IMyAidlInterface1 mService1;
ServiceConnection connection = new ServiceConnection() {

@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mService1 = IMyAidlInterface1.Stub.asInterface(service);
updateFromAidl();
}


@Override
public void onServiceDisconnected(ComponentName name) {
mService1 = null;
}
};


private void updateFromAidl() {
try {
String fromAidl = mService1.getValue();
txt1.setText(fromAidl);
} catch (Exception e) {
e.printStackTrace();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值