一、引言
最近在学习巩固Framework的一些东西,学完BInder后接触到AIDL,尝试简单使用一下。期间也遇到一些问题,但都解决了,在此记录一下。
本篇博客可以了解到:
1.AIDL IPC的简单使用,本demo使用同一项目下的两个Module代表C端和S端,C端简单调用S端服务
2.了解AIDL生成的java文件内容
3.解决C端bindService失败的问题
二、正文
前提:
创建两个模块作为两个进程:
1、S端创建AIDL文件
// IMyAidlInterface.aidl
package cn.edu.swu.server;
// Declare any non-default types here with import statements
interface IMyAidlInterface {
//业务代码
String getName(int seq);
}
2、编译生成java文件
在目录build\generated\aidl_source_output_dir\debug\out\cn\edu\swu\kttest\IMyAidlInterface.java
/*
* This file is auto-generated. DO NOT MODIFY.
*/
package cn.edu.swu.server;
// Declare any non-default types here with import statements
public interface IMyAidlInterface extends android.os.IInterface {
/**
* Default implementation for IMyAidlInterface.
*/
public static class Default implements cn.edu.swu.server.IMyAidlInterface {
//业务代码
@Override
public java.lang.String getName(int seq) throws android.os.RemoteException {
return null;
}
@Override
public android.os.IBinder asBinder() {
return null;
}
}
/**
* Local-side IPC implementation stub class.
*/
public static abstract class Stub extends android.os.Binder implements cn.edu.swu.server.IMyAidlInterface {
private static final java.lang.String DESCRIPTOR = "cn.edu.swu.server.IMyAidlInterface";
/**
* Construct the stub at attach it to the interface.
*/
public Stub() {
this.attachInterface(this, DESCRIPTOR);
}
/**
* Cast an IBinder object into an cn.edu.swu.server.IMyAidlInterface interface,
* generating a proxy if needed.
*/
public static cn.edu.swu.server.IMyAidlInterface asInterface(android.os.IBinder obj) {
if ((obj == null)) {
return null;
}
android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR);
if (((iin != null) && (iin instanceof cn.edu.swu.server.IMyAidlInterface))) {
return ((cn.edu.swu.server.IMyAidlInterface) iin);
}
return new cn