android開發(fā)系列之a(chǎn)idl
aidl在android開發(fā)中的主要作用就是跨進(jìn)程通訊來著,說到進(jìn)程相比很多人都是非常熟悉了,但是為什么會(huì)有跨進(jìn)程通訊這個(gè)概念呢?原來在android系統(tǒng)中,有這么一套安全機(jī)制,為了各個(gè)Apk數(shù)據(jù)的獨(dú)立性、安全性,它們彼此之間是不能直接進(jìn)行數(shù)據(jù)的訪問的。所以為了實(shí)現(xiàn)多個(gè)APK之間的數(shù)據(jù)、方法、代碼復(fù)用,我們通常采用的做法就是定義好AIDL接口,這樣就能夠既保護(hù)現(xiàn)有代碼的邏輯性、同時(shí)又能夠兼顧好封裝性,各個(gè)團(tuán)隊(duì)之間只需要溝通好AIDL接口定義就可以了。
下面讓我們直接進(jìn)入主題吧,在進(jìn)行AIDL定義的時(shí)候,通常會(huì)將公用的代碼邏輯單獨(dú)封裝到一個(gè)獨(dú)立的APK中,這個(gè)APK我們不妨成為服務(wù)器Server。當(dāng)定義好Server斷邏輯之后,就可以供其他第三方代碼調(diào)用了,這個(gè)第三方Apk我們不妨成為Client。但是Server和Client方,必須同時(shí)保證AIDL文件名稱相同,同時(shí)又在相同的包名下面。只有同時(shí)滿足這兩點(diǎn)的話,才能利用AIDL進(jìn)行通訊。
假如有一套公用的計(jì)算方法,在多個(gè)第三方APK中都需要調(diào)用。所以定義兩個(gè)android project,一個(gè)服務(wù)端程序AidlServer,一個(gè)客戶端測(cè)試程序TestClient。其中服務(wù)端、客戶端的AIDL接口文件都位于包“com.example.aidl下面”,定義好ICal.aidl文件,代碼如下:
1
2
網(wǎng)友評(píng)論 |