最近在畫各種圖整袁,所以這里貼貼圖來說明一下
前言
安卓中的Binder是一牽扯比較多的東西挽拂,由于內容較多先把bindServer 等 一些流程單獨提到下一次補充。其次人灼,雖然自己所掌握的東西感覺還是相對淺顯围段、C++層也不曾涉及。但是這個知識點是一個必須經歷的過程投放。先盡量把自己能想到的點寫一下奈泪。以便后續(xù)補充。
Binder是什么
Binder優(yōu)勢
Binder的通信機制
AIDL文件編譯成java文件組成
AIDL編譯出來的方法的執(zhí)行過程(暫時忽略bindService流程)
- 關于bindService的作用:客戶端調用bindService傳入ServiceConnection回調接口參數來回調服務連接狀態(tài)灸芳。通過AMS和遠程服務通信獲取遠程服務的IBinder對象涝桅,返回給客戶端,客戶端就可以拿到服務的引用來調用相關方法烙样。
- 這時客戶端拿到上面bindService獲取服務端的引用:
通過這個引用
流程如下:
編寫AIDL文件一些注意事項
舉例
- 新建com.a.bean.Person類谒获,并實現(xiàn)Parcelable的 蛤肌,java文件Person.java
// Person.java
package com.a.bean;
public class Person implements Parcelable {...}
- 編寫aidl接?文件壁却,Person.aidl
// Person.aidl
package com.a.bean;
parcelable Person;
- 編寫使用Person bean的aidl文件,PersonAidl.aidl
import com.a.bean.Person;
interface PersonAidl {
void addPerson(in Person person);
List<Person> getPersonList();
}