如何開發(fā)android應(yīng)用框架-eit門派秘笈api_第1頁
如何開發(fā)android應(yīng)用框架-eit門派秘笈api_第2頁
如何開發(fā)android應(yīng)用框架-eit門派秘笈api_第3頁
如何開發(fā)android應(yīng)用框架-eit門派秘笈api_第4頁
如何開發(fā)android應(yīng)用框架-eit門派秘笈api_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、44如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012_06還有多免費(fèi)的書籍(PDF)可下載 親自策劃的 Android 培訓(xùn)課程 45認(rèn)框架 API認(rèn)識(shí)框架 API1.7認(rèn)識(shí)框架與 Open API API 位于基類與子類之間 API 與 UI 的關(guān)系框架 API 的神奇:制約力量人人可以開發(fā)框架 API回顧與展望:從古典到新潮 API結(jié)語46如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012_061.1認(rèn)識(shí)框架與 Open API在 Android的系統(tǒng)開發(fā)事情中,大家通常只求API(ApplicationProgamming

2、erface),卻常常忽略有關(guān) API 的其它細(xì)節(jié),因而系統(tǒng)架構(gòu)受制于人,也導(dǎo)致商業(yè)模式的窒礙難行,成為商業(yè)競爭下的輸家。在 Android 的系統(tǒng)架構(gòu)里,其 Open API 大多呈現(xiàn)于父類別(Super-class,或簡稱為基類)的抽象函數(shù)(Abstract function)上。而這些基類(Base-class or Super-class)的集合,就成為 Android 應(yīng)用框架(Application framework)的要素。所以,我們說,在 Android 潮流下,商業(yè)成功的就藏在框架 API 的隙縫中。充分而全面性理解框架 API,即能擁有成功、造就天使,并成為商業(yè)競爭下的贏

3、家。過去,大家經(jīng)常比較關(guān)注于基類的涵義和內(nèi)容,例如會(huì)重視 Student 基類代表著學(xué)生;并認(rèn)為繼承(Inheritance) 代表著分類(Classification) 的涵義,例如PartimeStudent 繼承 Stuent,意味著 PartimeStuent 子類代表著學(xué)生。這是傳統(tǒng)的觀點(diǎn),它并沒有錯(cuò)。然而,如果人們能兼具觀點(diǎn)的話,更能看出許多事物的本質(zhì)。因此,本書將采取一個(gè)新觀點(diǎn):基類是,API 才是目的。也就是說,基類的存在是為了支持 API。這只是一個(gè)新觀點(diǎn),并非本質(zhì),所以沒有對錯(cuò)。同樣地,過去大家經(jīng)常認(rèn)為框架(Framework)就是一種系統(tǒng)架構(gòu)(Architecture)或

4、骨架,它是用來支撐許多應(yīng)用程序,所以就像房屋的地基一樣,必須穩(wěn)定可靠才行。這是傳統(tǒng)的觀點(diǎn),它并沒有錯(cuò)。只是人們?nèi)绻芗婢呖闯鲈S多事物的本質(zhì)。觀點(diǎn)的話,更能由于框架的就是一群基類的組合。如果期待框架是穩(wěn)定的,那么就會(huì)要求基類必須是穩(wěn)定可靠的,這將會(huì)違背虛實(shí)相依的系統(tǒng)設(shè)計(jì)原則,會(huì)導(dǎo)致 API 的不穩(wěn)定。所以,本書采用一個(gè)新觀點(diǎn):API 是目的,它是實(shí)的?;愂牵翘摰?。在應(yīng)用商城(Application Market)潮流下,Android里的各種產(chǎn)品都必須提供Open API 給廣大的第開發(fā)者。API 設(shè)計(jì)的幕后就是框架設(shè)計(jì)。47認(rèn)框架 API必須保持彈性,目的才會(huì)穩(wěn)定持久??蚣苁翘搶?shí)相依、彈

5、性與永恒的和諧組合體。于是,本書采用框架基類 API(簡稱框架 API)名詞來表達(dá)出上述的均衡和諧的組合體,并精致地描述框架、基類和 API 三者的微妙關(guān)系。在傳統(tǒng)觀點(diǎn)里,基類是抽象類別(Abstract Class),應(yīng)該從用戶需求或業(yè)務(wù)內(nèi)容中抽象出來,抽出共享而穩(wěn)定的結(jié)構(gòu)和行為,這是傳統(tǒng)的觀點(diǎn),它并沒有錯(cuò)。只是人們?nèi)绻芗婢哂^點(diǎn)的話,更能看出許多事物的本質(zhì)。在新的觀點(diǎn)里,茲拿來做比喻:框架就像;基類就像關(guān)口(如山、居庸關(guān)等);API 就像關(guān)口的大門。為了支持 API 這個(gè)目的,所以選擇了基類作為。為了將眾多基類組織成為一個(gè)整體,所以采取框架這個(gè)方法。和關(guān)口并不是從關(guān)內(nèi)或關(guān)外事物里抽象出來的

6、,而是偉大架構(gòu)師從內(nèi)心創(chuàng)造出來的(無中生有的)。同理,框架和基類也不是從需求或業(yè)務(wù)里抽象出來的,而是偉大架構(gòu)師從內(nèi)心創(chuàng)造出來的,目的只有一個(gè):支持 API。這只是一個(gè)新觀點(diǎn),并非本質(zhì),所以沒有對錯(cuò)。1.2API 位于基類與子類之間將眾多基類組織起來成為框架,這些基類的子類可以組織成用戶需要的應(yīng)用程序。此時(shí),這個(gè)框架就稱為應(yīng)用框架,而子類就稱為應(yīng)用子類,這些應(yīng)用子類合起來就成為一般所稱的應(yīng)用程序(AP)了。48如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012_06圖 1-1、 API 位于框架基類與子類之間Android此種應(yīng)用框架就是上最亮麗的一環(huán),它支撐著數(shù)十萬應(yīng)用程序,并包

7、容它們的百花齊放和繁榮成長。大家都知道,凡是一群人或系統(tǒng)模塊相互合作時(shí),必然有個(gè)的主導(dǎo)者。由于框架(基類)開發(fā)者會(huì)訂定其 API,通??蚣荛_發(fā)者會(huì)是框架 API 的主導(dǎo)者,所以框架 API 的開發(fā)者,最具有潛力成為贏家。由于框架 API 的神果,讓上圖里的 Server 與 Cnt 端都能獲得利基,吸引許多 IT 廠商熱情投入,發(fā)展出形形的應(yīng)用框架,支撐多樣化的 API。例如,云端服務(wù)提供商(如機(jī))軟硬件廠商提供商也開1-2 所示。、等)開發(fā)出云框架 API,而行動(dòng)端(如手動(dòng)端框架(如 Android 和 MeeGo 框架 API)。如下圖那么,開放 API 呢?過去大家都認(rèn)為應(yīng)用(AP),就

8、是與應(yīng)用領(lǐng)域有關(guān),而與無關(guān);其實(shí)不然,這一直誤導(dǎo)致了對開放 API 的認(rèn)知。新潮的做法是把一個(gè)應(yīng)用切成兩塊:一塊是應(yīng)用框架(Framework),一塊是應(yīng)用子類(Subclass)。一般寫應(yīng)用的時(shí)候都是寫應(yīng)用子類,很少寫應(yīng)用框架。為什么呢?因?yàn)樘O果的應(yīng)用框架是沒有開放的。S(Server)C(Cnt)API應(yīng)用子應(yīng)用框架49認(rèn)框架 API圖 1-2、 云端與終端都有框架 API然而,Android 的應(yīng)用框架上則是開放的,可以從 API 通到底層的硬件服務(wù),進(jìn)行深度的軟硬整合,進(jìn)而與云端服務(wù)進(jìn)行整合??蚣?API 與軟硬整合潮流自從 等行動(dòng)(Mobile)設(shè)備及服務(wù)產(chǎn)業(yè)逐漸茁壯以來,軟硬整合也

9、逐漸蔚為潮流。例如,以 MTK 為首的低價(jià) 系列的一站式解決方案(Turnkey Solution),是一種的軟硬整合潮流的開端。后來,蘋果的 的應(yīng)用商店成功運(yùn)營起來,讓此潮流邁向智慧化。接著的 Android 開放 迅速竄紅,讓此潮流邁向硬件差異化。在智能化、差異化的趨勢里,軟硬整合更加緊密,整個(gè)產(chǎn)業(yè)邁向高價(jià)、高質(zhì)量、高獲利的健康發(fā)展道路。這與過去 PC 時(shí)代的軟硬簡單結(jié)合是大不相同的。君不見,Android 于 2007 年問市之后,其聲勢扶搖直上,版圖迅速從產(chǎn)業(yè)擴(kuò)展到其它各領(lǐng)域,如電視、STB、車載系統(tǒng)、對講機(jī)、LEDAPI雲(yún)服務(wù)子動(dòng)端子雲(yún)服務(wù)框架動(dòng)端框架50如何開發(fā) Android 應(yīng)

10、用框架:EIT 門派秘笈By2012_06為什么要把服務(wù)做進(jìn)去框架呢? 也就是為什么要把服務(wù)做進(jìn)去里呢?傳統(tǒng)上,API 是位于 AP 與之間,與應(yīng)用領(lǐng)域無關(guān),例如偏重于通信、網(wǎng)絡(luò)等相關(guān)的。在今天潮流下,API 則位于框架與應(yīng)用子類之間,框架歸于,可以將領(lǐng)域知識(shí)做進(jìn)框架里、做進(jìn)做不到,開放的 Android 則做得到。里。但是封閉做不到,封閉的黑莓所以的 Q+可以把各種各樣的框架納入到電信或網(wǎng)絡(luò)服務(wù)商的里(如騰訊)里,進(jìn)而減輕廣大 AP 開發(fā)者的負(fù)擔(dān)。一個(gè)運(yùn)營商應(yīng)該把框架做好,例如把費(fèi)用支付的框架做好,把 API 提供給眾多 AP 開發(fā)者,這樣會(huì)大幅節(jié)省 AP開發(fā)的工作量,對于電信/網(wǎng)絡(luò)營運(yùn)商而

11、言是非常重要的。隨著 AP 開發(fā)者的使用,自然會(huì)變成通用的開放 API,這樣就節(jié)省了很多 AP 開發(fā)者的負(fù)擔(dān)。室內(nèi)裝潢等。到了 2012 年,Android 更邁向智慧、智d、智能電視和智能家庭的一致性。除了的開放之外,Android ADK 更邁向硬件的開放 API,讓形形的周邊裝置都能夠整合到 Android 平臺(tái)上。Android 的高度開放性,非常有利于軟硬整合,人人都能使用 C/C+撰寫底層服務(wù),緊密結(jié)合硬件,呈現(xiàn)其差異化,創(chuàng)造增值效果。這是全球 IT 產(chǎn)業(yè)的發(fā)展主軸。在這潮流下,許多人逐漸發(fā)現(xiàn),過去誤認(rèn)為 Android 應(yīng)用都是 Java 程序,并未曾認(rèn)知道真正的 Android

12、 應(yīng)用幾乎都需要 Java 與 C/C+兩者并用,才能兼具力與美,才能實(shí)現(xiàn)深度的軟硬整合,掌握產(chǎn)業(yè)脈動(dòng)和商機(jī)。其中,值得關(guān)注的是,框架(Framework)開發(fā)技術(shù)是呈現(xiàn)軟硬整合、創(chuàng)造差異化的必備條件??蚣茉O(shè)計(jì)就是 API 設(shè)計(jì),在 Application Market潮流下,Android里的各種產(chǎn)品都必須提供 Open API 給廣大的第三方開發(fā)者。51認(rèn)框架 API1.3API 與 UI 的關(guān)系基于上節(jié)所述的效益公司就做了Android 框架(即基類)API 來贈(zèng)送給應(yīng)用程序(AP)開發(fā)者,而 AP 開發(fā)者就以框架 API 為基礎(chǔ),配上應(yīng)用子類而成為完整的應(yīng)用程序,提供 UI(Usere

13、rface)給使用者來使用之。其中,API 是送人的,而 UI 則是可以賣錢的,其關(guān)系就如下圖 1-3 所示:圖 1-3、 API 與 UI 之關(guān)系上圖的 Activity 基類里含有 setContentView()和 onCreate()兩個(gè)函數(shù)。其中,52如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012_06setContentView()是具象(Concrete)函數(shù),內(nèi)含許多程序碼;而 onCreate()是抽象(Abstract)函數(shù),是空的,沒有程序碼。這些函數(shù)和其內(nèi)涵的程序碼都是用來給 AP 開發(fā)者。AP 開發(fā)者拿到基類之后,就撰寫 myActivity 子類,

14、將空的 onCreate()函數(shù)補(bǔ)起來,填上 UI 的操作指令;也可以呼叫(或調(diào)用)setContentView()函數(shù)的服務(wù),就形成一個(gè)完整的服務(wù)了。簡而言之,基類 API 加上子類 UI,才構(gòu)成完整的服務(wù),就可以賣錢了。在上述的 API 里,像 onCreate()等抽象函數(shù)是神奇力量的來源,也是框架 API的所在,它提供神秘的制約力量,讓框架基類能制約應(yīng)用子類的結(jié)構(gòu)(Structure)和行為(Behavior)。由于這種抽象函數(shù)的具有強(qiáng)大的制約力量,這種 API 讓基類能強(qiáng)導(dǎo)(Dominate)其子類的結(jié)構(gòu)和行為。其 API 的抽象函數(shù)名稱和參數(shù)都是由基類開發(fā)者決定的,然后要求子類開發(fā)

15、者去遵循而實(shí)作(Implement)之,讓基類開發(fā)具有高度的主導(dǎo)性,所以當(dāng)掌握了框架 API,就擁有主導(dǎo)權(quán)了??蚣?API 的神奇:制約力量從 API 可看出強(qiáng)弱地位API 的本意是:AP(應(yīng)用程序)與系統(tǒng)之間的接口,也就是一種互動(dòng)的協(xié)議。后來,逐漸擴(kuò)大為較為廣泛的意義:泛指組件之間的接口,也就是兩方組件開發(fā)者之間的互動(dòng)協(xié)議。這讓 API 與 UI 有了明確的區(qū)別:UI(Usererface)是指(如 AP)與用戶(User)之間的接口,也就是雙方互動(dòng)的協(xié)議。API 是指訂定的(如 AP)與(如框架)之間的接口,也就是雙方開發(fā)者所組件互動(dòng)協(xié)議。大家都知道,接口(erface)是雙方接觸的地方,

16、也是雙方或地盤的界線。誰擁用接口的制定權(quán),誰就掌握控制點(diǎn),就能獲得較大的主動(dòng)權(quán)(或稱為主導(dǎo)權(quán)),而位居強(qiáng)龍地位;而另一方則處于角色。地位,成為弱勢的一方,扮演地頭蛇53認(rèn)框架 API隨著框架 API 這項(xiàng)的大量而廣為流傳時(shí),其所攜帶的制約力量就逐漸擴(kuò)展出去,于是和版圖就日益擴(kuò)大了。君不見,的.NET 框架,以及的 Android 框架都是當(dāng)送人,而讓和的無限延伸,進(jìn)而主宰了整個(gè)產(chǎn)業(yè)。例如 Android 的 API 接口:圖 1-4、 Android 框架基類與子類的接口從這接口可看出它的不性質(zhì):onCreate()函數(shù)名稱定義于框架基類 Activity 里。onCreate()函數(shù)的程序碼

17、是寫在 myActivity 子類里;由子類提供給基類來呼叫或調(diào)用。從這個(gè)不性質(zhì),就知道 Activity 基類擁有主動(dòng)權(quán),是強(qiáng)勢的一方;而myActivity 子類則是弱勢的,受制于對方。于是,可以推論出來:Activity 基類的開發(fā)者(即擁有者)處于強(qiáng)龍地位,而 myActivity 子類的開發(fā)者(即擁有者)處于地頭 是雙方的接口協(xié)議(API) 由 Activity 開發(fā)者訂定 由 myActivity 提供服務(wù)(程式碼) 讓 Activity 呼叫(調(diào)用) 服務(wù)從 myActivity 向 Activity54如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012_06蛇角色

18、。例如,Android設(shè)計(jì)的特色是:1)強(qiáng)龍的(即 Android 本身)掌握了控制點(diǎn);2)強(qiáng)龍由強(qiáng)龍呼叫地頭蛇的來呼叫地頭蛇。為了實(shí)現(xiàn)強(qiáng)龍真正掌握控制點(diǎn),就必須,而且其呼叫接口,應(yīng)該由強(qiáng)龍開發(fā)團(tuán)隊(duì)所定義的。為了定義這項(xiàng)接口,就得寫個(gè)框架基類去與地頭蛇相互搭配。于是,Android 提供了 Java 層的應(yīng)用框架和底層的 HAL(Hardware Abstraction Layer)驅(qū)動(dòng)框架。如下圖:圖 1-5、 Android 的 Java 層應(yīng)用框架與 HAL 驅(qū)動(dòng)框架(一)這是從基類與子類繼承關(guān)系的觀點(diǎn)來看的,基類屬于框架;而子類則屬于 AP。于是,上圖就相當(dāng)于:55認(rèn)框架 API圖 1

19、-6、Android 的 Java 層應(yīng)用框架與 HAL 驅(qū)動(dòng)框架(二)無論是 Java 層應(yīng)用框架或是 HAL 驅(qū)動(dòng)框架都是由商業(yè)強(qiáng)龍(即HAL框架公司)出資開發(fā)的。然后,強(qiáng)龍必須將 HAL 框架原始程序碼提供給驅(qū)動(dòng)開發(fā)者(地頭蛇),地頭蛇就把 HAL 框架和他的驅(qū)動(dòng)程序一起編譯和連結(jié)起來。同理,強(qiáng)龍必須將 Java 層應(yīng)用框架原始程序碼提供給應(yīng)用程序開發(fā)者(地頭蛇),地頭蛇就把 Java 框架和他的應(yīng)用程序一起編譯和連結(jié)起來。此時(shí),HAL 框架和 Java 框架會(huì)提供主動(dòng)型 API 來呼叫地頭蛇的程序。有了上述的強(qiáng)龍系統(tǒng)架構(gòu)來支撐強(qiáng)龍商業(yè)架構(gòu),讓穩(wěn)居商業(yè)(或產(chǎn)業(yè))分工合作上的強(qiáng)龍地位。應(yīng)用

20、框架AP子子HALLinuxLibrariesRuntime基56如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012_061.4.2制約力量的強(qiáng)弱等級(jí)框架 API 讓基類擁主導(dǎo)(Dominate)地位,也就是說,基類主導(dǎo)了子類。例如,下圖 1-6 里的 onCreate()函數(shù)所的 API,其制約力量強(qiáng)弱程度比率為:基類:子類 0.8 : 0.2就此 API 而言,基類具有高度的制約力量可主導(dǎo)子類。其理由是:1)基類開發(fā)者制定了接口(例如決定 onCreate()函數(shù)名稱及其參數(shù)型態(tài));2)基類呼叫 AP 子類的 onCreate(),使得這框架基類的制約力量有 0.8(比率是

21、0.8:0.2)。如下圖:圖 1-7、 基類與子類接口的制約力量請看看下圖 1-8,其中的 AP 子類呼叫基類的 setContentView()具象函數(shù),子類擁有較大控制權(quán)。也就是說,相對上,框架基類與應(yīng)用子類之間的制約力量比率是(0.4:0.6)。其理由是:1)基類開發(fā)者制定了接口(例如決定 setContentView()函0.8:0.257認(rèn)框架 API數(shù)名稱及其參數(shù)型態(tài) ) ,應(yīng)用子類并沒有決定權(quán); 2) 子類呼叫基類的 setContentView(),使得這框架基類的制約力量只有 0.4(比率是 0.4 : 0.6)。如下圖:圖 1-8、制約力量的等級(jí)然而,值得特別留意的情形是,

22、子類是否主動(dòng)呼叫基類的函數(shù)。如果像上圖一樣,基類 Activity 透過先呼叫子類 myActivity 的 onCreate()函數(shù),此時(shí)子類才呼叫 Activity 的 setContentView()函數(shù)。由于子類是呼叫基類(并非主動(dòng)呼叫),就不產(chǎn)生子類對基類的制約力量,所以不必把圖中的(0.4 : 0.6)制約力量考慮進(jìn)去。因之,從整體上而言,上圖里的框架基類仍擁有高達(dá)(0.8 : 0.2)的主導(dǎo)性。剛才說過了,框架 API 通常具有兩項(xiàng)特性:1)2)基類開發(fā)者制定(Define)了接口(即函數(shù)名稱及其參數(shù)型態(tài))。子類實(shí)作(Implement)此接口,并由基類呼叫(Call)其函數(shù)。0

23、.80.4:0.20.658如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012_06此時(shí)讓框架基類獲得高達(dá)(0.8:0.2)的主導(dǎo)性。許多人常問到:甚么情況下,框架基類才能獲得(1.0:0.0)的絕對主導(dǎo)性呢?誕生應(yīng)用子類的對象。如下圖:是:還需要具備另一個(gè)條件:由框架來圖 1-9、絕對強(qiáng)勢的制約力量此時(shí),框架基類具有主導(dǎo)性,其制約力量強(qiáng)弱程度比率為:基類:子類 1.0 : 0.0也就是具有極強(qiáng)大的制約力量。值得留意的是,不一定是由自己親屬的基類(如Activity 或 Activity 的父類)來誕生子類(如 myActivity)對象。常常是由框架里的其它基類來誕生。例如,A

24、ndroid 框架的基類與應(yīng)用子類之間,就實(shí)現(xiàn)了上整體1.0:0.059認(rèn)框架 API述(1.0:0.0)的強(qiáng)大制約力量,讓 Android 框架(內(nèi)含基類)擁有制高點(diǎn)(即主控權(quán))。1.4.3Why,框架 API?很多人常提出疑問:提供API的途徑何其多? 為何特別強(qiáng)調(diào)框架的API呢?例如,一般程序庫(Library)也提供API給開發(fā)者使用、網(wǎng)絡(luò)服務(wù)(Web Service)也是一種API,為何只談框架API呢? 為了回答這問題,必須回顧過去20年來的展經(jīng)驗(yàn)了。其中有兩項(xiàng)重要的事跡:發(fā)1980年代后期,CORBA是一項(xiàng)對象導(dǎo)向的服務(wù)標(biāo)準(zhǔn)API,實(shí)現(xiàn)此項(xiàng)標(biāo)準(zhǔn)的系統(tǒng)中,最著名的商業(yè)中間鍵構(gòu)上,A

25、PI是一種制約力量,不是一種就是Orbix系統(tǒng)。然而,在系統(tǒng)架,不能用來嘉惠予AP開發(fā)者。導(dǎo)致CORBA和Orbix系統(tǒng)架構(gòu)無法支撐理想的商業(yè)模式,而終告跡。匿1990年代中后期,繼之后的是公司推出系統(tǒng)架構(gòu),雖然提供了當(dāng)時(shí)先進(jìn)的對象導(dǎo)向(Object-Oriented)的API,但還是API,仍然是一種制約力量,不是一種,不能用來嘉惠予AP開發(fā)者。與CORBA和Orbix一樣的系統(tǒng)架構(gòu),一樣無法支撐理想的商業(yè)模式,也終告匿跡。后來,IT業(yè)界逐漸發(fā)現(xiàn):API可用來框住應(yīng)用程序(AP),如同一把利劍;若要獲得開發(fā)者的青睞,利劍必須搭配面包,就像鉤必須搭配魚餌,才能吸引魚群。于是,改變觀點(diǎn),把焦點(diǎn)放

26、在面包上,發(fā)現(xiàn)對象導(dǎo)向技術(shù)里的抽象類別(Abstract Class)及其提供的預(yù)設(shè)函數(shù)(Default Function)以及其它具體類別,所整合而成的框架(Framework)正式一項(xiàng)極具主動(dòng)型 API,也能發(fā)揮巨大的控制力。因之,力的魚餌。此外,由框架所提供的于2001推出.NET框架來取,由于.NET框架融合了面包與利劍,既能嘉惠廣大的開發(fā)者,又能代有效框住眾多的應(yīng)用程序。.NET框架是給廣大的開發(fā)者的最佳,和愛心,讓他們因.NET而受惠。表達(dá)了對全球廣大第開發(fā)者60如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012_06到了 2007 年,機(jī)硬件廠商,也也依樣畫葫蘆,買

27、來 Android 框架,當(dāng)成給全球廣大的 AP 開發(fā)者。由于 Android 框架給全球嘉惠予硬件廠商,所以全球的硬件廠商也是受惠者,因而大力支持 Android,也讓Android 聲勢扶搖直上。Android 框架是面包與利劍的融合體,不僅嘉惠予硬件廠商,也嘉惠予全球數(shù)以萬計(jì)的廣大 AP 開發(fā)者,同時(shí)也主導(dǎo)了這些開發(fā)者。由于熱情投入開發(fā)框架 API,并當(dāng)成來送人,除了嘉惠眾多硬件廠商,也嘉惠了全球的 AP 開發(fā)者,讓人人能擁有沒錢就,就有錢的利益。古賢者說:圣人無積,既以為人己愈有,既以予人己愈多。從歷史可知,、熱情投入的興建,而成為最大獲利者。如今,和微軟都熱情投入框架的開發(fā),而成為幸

28、運(yùn)的最大贏家。1.5 人人可以開發(fā)框架 API在 Android上,提供了強(qiáng)勢的框架 API,掌握了系統(tǒng)的主動(dòng)權(quán)(或升控制權(quán)),大大拓展其市場版圖,成為幸運(yùn)的最大贏家。這常常讓許多人誤認(rèn)為只有才有機(jī)會(huì)開發(fā)框架 API,其實(shí)不然,人人都能在開源&開放的 Android上開發(fā)基類來提供 API,并當(dāng)成送人。當(dāng) AP 開發(fā)者采用你的框架(基類)API(即接受你的)時(shí),由于你擁有主控權(quán)了。逐漸地,你開發(fā)愈多的基類 API,你的框架內(nèi)容就愈豐富,提供了愈多奶水,就越愈能吸引眾多 AP 開發(fā)者,于是你在系統(tǒng)架構(gòu)里的地位就愈強(qiáng)勢了。換句話說,人人都有機(jī)會(huì)發(fā)揮其特定領(lǐng)域(-Specific)知識(shí),打造特定領(lǐng)域

29、的基類(和API),成為特定領(lǐng)域框架(-Specific Framework, 簡稱 DSF),提供特定領(lǐng)域的框架 API,提供了特殊領(lǐng)域的專業(yè)服務(wù),幫助眾多 AP 開發(fā)者,減輕其開發(fā) AP的負(fù)擔(dān),也就能吸引眾多 AP 開發(fā)者了,造就了自己成為特定領(lǐng)域的主導(dǎo)者地位。在 Android 基礎(chǔ)上,需要千千萬萬各行各業(yè)的領(lǐng)域框架(DSF),例如自己就開發(fā)出智能型電視(Smart TV)的領(lǐng)域框架。還有汽車大廠Continental 公司也在 Android上開發(fā) AutoLinQ 車載領(lǐng)域框架。此外,諸如語音辨識(shí)、醫(yī)療影像等形形的領(lǐng)域框架,也將如同春筍般波波上市,不斷充實(shí)Android的服務(wù)內(nèi)涵,讓

30、 Android更健康、更茁壯了。61認(rèn)框架 API例如,在 Android 環(huán)境里的既有應(yīng)用框架如下圖:圖 1-13、 Android 典型的框架基類與應(yīng)用子類在這圖里,上層的 Activity 和 View 是開發(fā)(并)的框架基類,其提供了 API(包括 onCreate()和 onDraw()函數(shù))來制約 AP。這個(gè)有利于的優(yōu)勢該如何定位居主導(dǎo)地位,制約了各 AP 開發(fā)者。那么,系統(tǒng)架構(gòu),讓位自己呢?開發(fā)的 DSF 又該擺在哪里呢?是:在上圖的基類與子類之間可以加入小基類(如下圖里的 Location 類)所示:的基AP62如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012

31、_06圖 1-14、自己框架的定位當(dāng)你開發(fā)了自己的 DSF 小框架,來協(xié)助 AP 開發(fā)者,一方面節(jié)省 AP 的開發(fā)負(fù)擔(dān),另一方面藉由框架 API 去制約 AP 子類別,就能創(chuàng)造對你非常有利的主導(dǎo)地位了。Android 大框架就像一個(gè)大盤子,而小框架則像一個(gè)小盤子。兩者兼容,小盤子迭在大盤子里,并不會(huì)破壞大盤子。如此,既不破壞 Android 的既有地位,又能鼓勵(lì)人人都熱情投入,開發(fā)各行各業(yè)的專業(yè)領(lǐng)域框架,將其擴(kuò)充為有利于自己的新架構(gòu),創(chuàng)造了主導(dǎo)地位。Android 既有框架(我們的框架)框架APIAP63認(rèn)框架 API1.6 回顧與展望:從古典到新潮 API首先假設(shè)你是服務(wù)(如云端服務(wù)或一般網(wǎng)

32、絡(luò)服務(wù))供應(yīng)廠商,而你想要規(guī)劃框架基類 API 來包裝你的服務(wù),并且讓你擁有對 Cnt 端的主導(dǎo)性呢? 于是,從古典的 Cnt/Server 架構(gòu)談起,它的 API 呈現(xiàn)于 Cnt 與 Server 之間,并成為兩端分工生產(chǎn)(或開發(fā))的界線。通稱為古典 API,傳統(tǒng)分工模式。如下圖:圖 1-15、 古典的 API,傳統(tǒng)的分工在這種架構(gòu)里,是 Service_Imp 提供服務(wù)給 Cnt,猶如 Service_imp 種南瓜給 Cnt 吃(呼叫),使得 Service_imp 受制于 Cnt,于是服務(wù)端無法對 Cnt 端產(chǎn)生制力量。由于 Cnt強(qiáng)勢,使得 Service_imp 端常常成為救火隊(duì)而

33、疲于奔命。此時(shí),Service_imp 端就能開發(fā)自己的基類 API,透過這個(gè)新潮的 API 來自己的制約力量,就不必再了。如下圖:64如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012_06圖 1-16、創(chuàng)造新 API,取得境內(nèi)主導(dǎo)權(quán)服務(wù)端提供 AbstractService 基類來包裝 Service_Imp 類別的服務(wù);然后提供基類 API 給 C nt 端來使用。此時(shí),服務(wù)端大膽地開放出 SubService 子類別給 C nt端來開發(fā)。于是, C nt 端既負(fù)責(zé)開發(fā) C nt 類別,又負(fù)責(zé)開發(fā) SubService 子類別。從上述得知,唯有服務(wù)端獲得主導(dǎo)權(quán),它才會(huì)大膽開

34、放給 Cnt 端來幫忙開發(fā) SubService 子類別。一旦服務(wù)端獲得更大的主導(dǎo)權(quán),它就會(huì)更大膽地開放子類別給的 Cnt 端提供商去開發(fā)了。隨著 Cnt 端的數(shù)量愈多,其地位就愈高,日益成為真正的強(qiáng)龍了。依據(jù)同樣的道理,服務(wù)端也能進(jìn)一步將拓展到(即 Cnt 端),取得 Cnt 端的主導(dǎo)權(quán),進(jìn)而開放 Cnt 端的子類別。如下圖:65認(rèn)框架 API圖 1-17、 主控權(quán)擴(kuò)大到 Cnt 端在上圖里,服務(wù)端提供商開發(fā)了 AbstractCnt 基類去給Cnt 端開發(fā)者,隨之版圖就擴(kuò)大到 Cnt 端了。這把框架(基類)API 與服務(wù)(Service)做了很好的銜接。無論是在服務(wù)端,還是 Cnt 端,都

35、是由服務(wù)端提供商來開發(fā)基類 API 者,來取得全面性的主導(dǎo)權(quán),進(jìn)而開放出子類別。于是,框架基類 API 成為取得全面把這種架構(gòu)應(yīng)用到它的 GAE 云端和 Android 手性的主導(dǎo)權(quán)的利器。例如,機(jī)終端上,如下圖:66如何開發(fā) Android 應(yīng)用框架:EIT 門派秘笈By2012_06圖 1-18、的框架 API 創(chuàng)造了端與云的霸主地位在 GAE 云提供了 Servlet 基類,取得制約力量,就能大膽地上,開放子類別,讓全球的 AP 開發(fā)者來云端撰寫 Servlet 的子類了。一樣的框架 API技術(shù)和策略,能運(yùn)用于終端,也能運(yùn)用于云端。替位。創(chuàng)造了端與云的霸主地同樣地,Android 電視,

36、而 Android成云端變成電視機(jī)的終端。依循一樣的框架 API 技術(shù)和策略,當(dāng)你擁有了 Servlet 基類,就能大膽地開放給別人來你的電視機(jī)里寫 Servlet 的子類(即 Servlet 程序碼)了。當(dāng) AP 在 Android電視上執(zhí)行,此電視機(jī)就變成終端了。當(dāng) Servlet 模塊在Android 電視上執(zhí)行,此電視機(jī)就變成云端了。事實(shí)上,在 Android 電視上,既能執(zhí)行 AP,又能執(zhí)行 Servlet 模塊。于是,Android 電視就成為亦端亦云的設(shè)備了。如下圖:67認(rèn)框架 API圖 1-19、版圖繼續(xù)擴(kuò)大到電視機(jī)在 Android 框架里撰寫了 Context 基類。此基類提供了豐富的 API。Android 的 AP 之間可以透過這 API 來溝通。當(dāng)然,也能讓 Servlet 模塊來與 AP 溝通。例如,由別機(jī)里的 myActivity 傳送 HTTP 呼叫到上圖里 IServlet 接口,就呼叫到本機(jī)的 myServlet 子類別;然后由 myServlet 呼叫 Con

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論