安卓多程式通訊初探

utf發表於2017-12-21

安卓開啟多執行緒方式

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:感謝任玉剛的藝術探索書籍,動手實踐得到的知識積累

相關文章