Android进程间通信机制之AIDL
AIDL的全称为:Android Interface Definition Language,即安卓接口定义语言。我们可以使用它定义客户端和服务端通信时都认可的编程接口。
在Android中如果我们自己编写这个过程的代码,无疑是极其繁琐的。因此我们可以利用AIDL来处理,我们只需要编写aidl接口文件,然后再重新编译一下项目系统会帮我们生产Binder接口。
在Android Studio中编写AIDL
利用AIDL进行进程间通信的步骤如下:
-
创建AIDL文件
创建实体对象,实现Parcelable接口;
创建aidl文件夹,创建aidl接口文件和实体类的映射aidl文件(aidl文件包名路径需要和实体对象包名路径一致);
重新build一下项目。
-
实现Server端
创建service,创建Binder对象,实现接口方法;
在onBind中返回创建的Binder对象。
-
实现Client端
创建ServiceConnection对象,实现其方法,需要再其方法中拿到AIDL对象;
绑定服务bindService();
通过调用AIDL类中的方法向服务端发起请求。
一、创建AIDL文件
1.创建Book实体类,实现Parcelable接口;
package com.kanlulu.aidl_test.bean;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by kanlulu
*/
public class Book implements Parcelable {
private int bookId;
private String bookName;
public Book(int bookId, String bookName) {
this.bookId = bookId;
this.bookName = bookName;
}
public int getBookId() {
return bookId;
}
public void setBookId(int bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
@Override
public String toString() {
return "Book{" +
"bookId=" + bookId +
", bookName='" + bookName + '\'' +
'}';
}
protected Book(Parcel in) {
bookId = in.readInt();
bookName = in.readString();