Binder和AIDL的關(guān)系

AIDL即Android Interface Definition Language(安卓接口定義語言),當(dāng)我們創(chuàng)建了這個接口后,系統(tǒng)會自動生成其對應(yīng)的Binder類,它繼承了IInterface, 內(nèi)部有一個靜態(tài)抽象類Stub和Stub內(nèi)部的Proxy類。其中Stub繼承了Binder類,所以AIDL中的Stub即為一個Binder對象。

綜上AIDL定義的接口,它除了是一個接口以外,它還是一個Binder對象,支持在接口和Binder之間相互轉(zhuǎn)換(asBinder(), asInterface())。

結(jié)下,它的們共同點和差異的地方:

1.他們都與IPC(遠程)調(diào)用有關(guān)。

2.本質(zhì)不同,Binder是一個對象,繼承了IBinder對象,你可以借助它來自定義RPC協(xié)議。AIDL是android提供的接口定義語言,借助這個工具,你可以很輕松地實現(xiàn)IPC通信機制,根據(jù)需要靈活定義接口,

3.作用范圍不同。如果是在一個應(yīng)用里實現(xiàn)遠程調(diào)用,使用Binder即可,沒必要使用AIDL。如果涉及到在多個應(yīng)用程序之間使用IPC通信,并且在服務(wù)又有多線程業(yè)務(wù)處理,這時可以使用AIDL。

原文鏈接:https://blog.csdn.net/u010291868/article/details/73359890

Binder:Linux的動態(tài)內(nèi)核可加載模塊。可單獨編譯,不可獨立運行。

它在運行時被鏈接到內(nèi)核作為內(nèi)核的一部分裕興。

Android系統(tǒng)動態(tài)添加一個內(nèi)核模塊運行在內(nèi)核空間。

內(nèi)核模塊運行在內(nèi)核空間,用戶進程之間通過這個內(nèi)核模塊作為橋梁來實現(xiàn)通信。

——Binder驅(qū)動 Binder Driver

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容