一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

深刻解析?Android?的?AIDL?介面(一) - Android中文網(wǎng)

 ganyaofu 2010-12-27

深刻解析 Android 的 AIDL 介面

在Android應(yīng)用框架裡,應(yīng)用層級的軟體大多是Java類別,而系統(tǒng)層級的軟體大多是C或 C++類別。Android使用JNI介面來達成這個目標。例如,在Android裡有個MediaPlayer.cpp類別,當它搭配上JNI介面之後,在VM上執(zhí)行的MediaPlayer.java就可以透過JNI介面與MediaPlayer.cpp類別溝通了。

圖1-1

  基於這樣的架構(gòu),我門就可以盡量將MediaPlayer.java裡的程式邏輯移入MediaPlayer.cpp類別裡,以便加快程式的執(zhí)行速度。此外,以JNI介面包裝MediaPlayer.cpp類別,並且銜接相互輝映的MediaPlayer.java類別,可以讓眾多的Java應(yīng)用程式透過MediaPlayer.java來使用MediaPlayer.cpp類別的服務(wù)。這是一種非常有用的包裝技巧,藉由包裝來創(chuàng)造更多的應(yīng)用機會。

  為了進一步創(chuàng)造更多的應(yīng)用機會,可以替MediaPlayer.java類別加上AIDL介面,讓更多的Java應(yīng)用程式能與MediaPlayer.java類別進行遠距的IPC溝通。如下圖所示:

   

圖1-2

  上圖表示出JNI在Android裡扮演的角色,以及Android框架裡Java與C/C++類別融合的基本架構(gòu)。上面的圖1-2是一個較為抽象的圖,凸顯JNI與AIDL的相互呼應(yīng)之角色。

  於此,以高煥堂所寫的第2本Android書:<<Android 軟體架構(gòu)設(shè)計>> 一書裡的範例:HalfAdder組件為例,展示其幕後的細節(jié)架構(gòu)。首先看看其JNI介面之上的細節(jié)架構(gòu),如下UML圖:

圖1-3  上圖1-2幕後的細節(jié)架構(gòu)之一

  上圖凸顯了AIDL介面的細節(jié)架構(gòu)。下圖1-4將換個角度,從*.so開發(fā)者來看,當我們開發(fā)系統(tǒng)層級的C/C++類別時,也能善用JNI,創(chuàng)造C/C++類別的廣大商機。其細節(jié)架構(gòu)如下UML圖: 

圖1-4  上圖1-2幕後的細節(jié)架構(gòu)之二

  1.3  說明C/C++組件開發(fā)

  從上圖1-4可看到此範例的C/C++組件部份。其詳細的程式碼,請閱讀高煥堂所寫的第2本Android書:<<Android 軟體架構(gòu)設(shè)計>> 一書之第5~6章。

  1.4  說明AIDL介面類別之開發(fā)

  基於剛才所撰寫的相對應(yīng)Java類別:Calculator.java,就能順利配上AIDL介面了。

  1.4.1  細說AIDL介面與IBinder介面

  其實,AIDL介面幕後是仰賴著IBinder介面的。所以,我們的應(yīng)用程式可以選擇使用IBinder介面,也可以使用AIDL介面。如果採取IBinder介面,就不必使用aidl.exe工具去產(chǎn)出calInterface.java介面定義檔了,其介面類別較單純一些,如下圖所示:

圖1-5  僅使用較單純的IBinder介面

  由於IBinder介面只提供單一函數(shù)(即transact()函數(shù))來進行遠距溝通,呼叫起來比較不方便。例如,當Calculator類別有多個函數(shù)時,myActivity要如何呼叫它們呢? 可以呼叫IBinder介面的transact()函數(shù),再轉(zhuǎn)而呼叫Calculator的各個函數(shù)。由於它並不太方便,所以Android提供Proxy/Stub結(jié)構(gòu)的AIDL介面來化解這個問題,其架構(gòu)圖如下:

圖1-6  更方便的AIDL介面(其介面類別結(jié)構(gòu)較複雜一些)

  在本範例裡,將採取AIDL介面,同時也介紹其幕後的IBinder介面,以及其兩這之間的密切關(guān)係。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产人妻精品区一区二区三区| 亚洲精品av少妇在线观看| 国产一区欧美午夜福利| 精品欧美日韩一二三区| 老司机精品福利视频在线播放| 欧美日韩精品一区免费| 亚洲一区二区三区免费的视频| 欧美黑人暴力猛交精品| 日韩中文字幕免费在线视频| 久久机热频这里只精品| 日本妇女高清一区二区三区| 国产免费一区二区三区av大片| 午夜久久精品福利视频| 国产福利在线播放麻豆| 国产一级内射麻豆91| 精品人妻久久一品二品三品| 日本一区二区三区黄色| 五月天丁香亚洲综合网| 中国一区二区三区不卡| 国产爆操白丝美女在线观看| 九九热视频网在线观看| 精品al亚洲麻豆一区| 国产av大片一区二区三区| 亚洲熟妇熟女久久精品| 精品日韩中文字幕视频在线| 亚洲精品伦理熟女国产一区二区| 国产又粗又猛又爽又黄| 日韩亚洲精品国产第二页| 欧美日韩国产精品自在自线| 日韩欧美91在线视频| 欧美自拍系列精品在线| 91人妻人人澡人人人人精品| 一区二区三区亚洲天堂| 黄片美女在线免费观看| 欧美加勒比一区二区三区| 久久99精品国产麻豆婷婷洗澡| 老富婆找帅哥按摩抠逼视频| 日韩精品小视频在线观看| 91日韩欧美在线视频| 欧美国产日产综合精品| 国产午夜免费在线视频|