安卓開啟多執行緒方式
android中四大元件增加android:process屬性即可開啟多程式。
“:”的含義是指在當前的程式名前面附加上當前的包名,並且以“:”的程式屬於當前應用的私有程式,其他應用元件不可以和它跑在同一個程式中。不以“:”開頭的程式屬於全域性程式,其他應用通過ShareUID方式和它跑在同一程式中。
AIDL通訊分析
主要實現思路
客戶端:
繫結伺服器
服務端:
完成AIDL介面工作
根據一個小demo分析
- 服務端
build 服務端專案以後gen目錄下會生成IBookManager.java檔案。 複製到客戶端去。
- 客戶端
客戶端將一本bookName為“xiaofang”的書傳送服務端以後獲得bookName為“xiaoxiao”的書
DESCRIPTOR
binder的唯一標識
asBInder
返回Binder物件
asInterface(android.os.IBinder obj)
將伺服器的Binder轉換成客戶端的所需要的AIDL介面物件,這種轉換過程是區程式的,如果客戶端和服務端處於同一程式,返回的是Sub物件,否則返回的Sub.Proxy的物件
onTransact
執行於服務端中的Binder執行緒池中,客戶端發起的跨程式處理通過系統底層封裝後由該方法處理;如果返回false,客戶端請求會失敗。
ps:感謝任玉剛的藝術探索書籍,動手實踐得到的知識積累