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