这里只解释AIDL
AIDL:Android Interface Definition Language,即Android接口定义语言。
AIDL用在建立安卓remote service(远程服务)的时候用到,但是感觉创建个AIDL都困难重重啊,所以mark一下。
右键new->AIDL->AIDL file新建aidl
package space.xxhui.binderdemo;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by hui on 2016/10/7.
*/
public class Book implements Parcelable {
private int bookId;
private String bookName;
public Book(Parcel source) {
bookId = source.readInt();
bookName = source.readString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(bookId);
dest.writeString(bookName);
}
public static final Creator<Book> CREATOR = new Creator<Book>() {
@Override
public Book createFromParcel(Parcel source) {
return new Book(source);
}
@Override
public Book[] newArray(int size) {
return new Book[0];
}
} ;
}
// Book.aidl
package space.xxhui.binderdemo;
parcelable Book;
上面贴出了Book类和Book.aidl的定义,
这里要注意这么几点:
1、Book类要实现Parcelable接口;
2、Book类与Book.aidl需要有相同的目录结构
比如:
-java
--space.xxhui.binderdemo
---module
----Book.java
-aidl
--space.xxhui.binderdemo
---module
----Book.aidl
要么都在根目录(如上图),要么放在同一目录(这里打比方为Module目录)下;
下面的两行很拗口,可以选择不读,这里说一个技巧,我们肯定有上面的java目录下Module目录先新建,那么我们新建aidl的时候不用在aidl那里新建module文件夹,
我们在java下选中Module文件夹右键新建aidl,那么会自动生成在aidl目录下生成相同的目录结构
3、主义一下IBookManager的方法定义void addBook(in Book book);多了个in,形参少了那个in也是不行
4、aidl没有代码补全功能
新建讲解完成
讲解内容摘自《Android开发艺术》一书