AIDL接口:繼承IInterface。 Stub類:Binder的實現類,服務端經過這個類來提供服務。 Proxy類:服務器的本地代理,客戶端經過這個類調用服務器的方法。 asInterface():客戶端調用,將服務端的返回的Binder對象,轉換成客戶端所須要的AIDL接口類型對象。返回對象: 若客戶端和服務端位於同一進程,則直接返回Stub對象自己; 不然,返回的是系統封裝後的Stub.proxy對象。 asBinder():根據當前調用狀況返回代理Proxy的Binder對象。 onTransact():運行服務端的Binder線程池中,當客戶端發起跨進程請求時,遠程請求會經過系統底層封裝後交由此方法來處理。 transact():運行在客戶端,當客戶端發起遠程請求的同時將當前線程掛起。以後調用服務端的onTransact()直到遠程請求返回,當前線程才繼續執行。
int main(int argc, char **argv){ struct binder_state *bs; void *svcmgr = BINDER_SERVICE_MANAGER; bs = binder_open(128*1024); if (binder_become_context_manager(bs)) { LOGE("cannot become context manager (%s)\n", strerror(errno)); return -1; } svcmgr_handle = svcmgr; binder_loop(bs, svcmgr_handler); return 0; }