Binder主要用在Service中,包括AIDL和Messenger。AIDL是用来辅助生成Binder的一种途径。
一、AIDL的使用
AIDL生成Binder还没有调通(就是绑定不上远程Service啊怎么回事),好像没脸写AIDL的使用了,就把别人是使用方式链接贴上来吧:
https://www.jianshu.com/p/29999c1a93cd
关于AIDL生成的Binder,姑且权当做一篇笔记,日后再逐渐完善吧:(Service是一个挺大的坑啊,绑定的时候都无法获得IBinder)
二、自己动手实现Binder
参考书籍《Android开发艺术探究》,不借助AIDL而手动 实现是为了熟悉Binder的跨进程通信机制。
2.1实现Parcelable
自己的类需要实现Parcelable接口才能用于Binder的跨进程通信。
public class Book implements Parcelable {
public int bookId;
public String bookName;
protected Book(Parcel in) {
bookId = in.readInt();
bookName = in.readString();
}
//实现序列化功能
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(bookId);
dest.writeString(bookName);
}
@Override
public int describeContents() {
return 0;
}
//实现反序列化功能
public static final Creator<Book> CREATOR = new Creator<Book>() {
@Override
public Book createFromParcel(Parcel in) {
return new Book(in);
}
@Override
public Book[] newArray(int size) {
return new Book[size]