android進(jìn)程間通信--AIDL

AIDL構(gòu)成:

? ? 服務(wù)端:

? ? ? ? ? ?服務(wù)端創(chuàng)建一個(gè)service來(lái)監(jiān)聽(tīng)客戶(hù)端請(qǐng)求,然后創(chuàng)建一個(gè)AIDL文件,里面是要實(shí)現(xiàn)的方法,將暴露給客戶(hù)端的接口在這個(gè)AIDL文件中聲明,最后在service中實(shí)現(xiàn)這個(gè)AIDL接口。

? ??客戶(hù)端:

? ? ? ? ? ? 客戶(hù)端需要綁定服務(wù)端service,綁定成功后,將服務(wù)端返回的Binder對(duì)象轉(zhuǎn)成AIDL接口所屬類(lèi)型,接著就可以調(diào)用AIDL中的方法了。

? ? ? ? ? ??

AIDL接口創(chuàng)建:

? ? ? ? ?創(chuàng)建一個(gè)后綴為AIDL的文件,在里面直接聲明接口和方法。

? ? ? ?注意:如果AIDL文件中用到自定義的Parcelable對(duì)象,那必須新建一個(gè)和他同名的AIDL文件,并在其中聲明他的Parcelable類(lèi)型。

服務(wù)端Service:

? ? ? ? 創(chuàng)建一個(gè)service,在里面創(chuàng)建一個(gè)binder對(duì)象并在onBind中返回他,這個(gè)對(duì)象繼承創(chuàng)建的的AIDL文件并實(shí)現(xiàn)內(nèi)部的方法(MyAidl().stub)

客戶(hù)端實(shí)現(xiàn):

? ? ? ? ?綁定遠(yuǎn)程服務(wù),綁定成功后將服務(wù)端返回的Binder對(duì)象轉(zhuǎn)換成AIDL接口,然后通過(guò)這個(gè)接口去調(diào)用服務(wù)端的遠(yuǎn)程方法。


AIDL支持類(lèi)型:

? ? ? ?基本數(shù)據(jù)類(lèi)型(int,long, char, boolean, double等)

? ? ? ?String和CharSequence

? ? ? ?List:只支持ArrayList,里面每個(gè)元素都必須能夠被AIDL支持。

? ? ? ?Map:只支持HashMap,里面的每個(gè)元素都必須被AIDL支持,包括key和value。

? ? ? ?Parcelable:所有實(shí)現(xiàn)了Parcelable接口的對(duì)象。

? ? ? ?AIDL:所有AIDL接口本身也可以在AIDL文件中使用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容