資源描述:
《Application Fundamentals》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Android主要框架JAVAJNIC/匯編Android應(yīng)用程序框架設(shè)計意圖Android的應(yīng)用只是一個虛的概念,并沒有實際的入口,這個不像Window平臺上的應(yīng)用程序的概念,Android更多的是提供組件(Components)的概念。突出請求和服務(wù),突出組件個體,弱化邊界,系統(tǒng)的各個組件可以自由的無邊界的交流,服務(wù)請求者直接發(fā)出請求,不論這個對象在何處和屬于誰的,組件是自由獨立的個體,一個應(yīng)用程序可以直接請求使用其他的應(yīng)用的的組件,這個是Android應(yīng)用框架設(shè)計的核心理念,其他的一切都是在為這個核心理念服務(wù)。讓程序員忽
2、略應(yīng)用的概念,甚至徹底的拋棄進(jìn)程這樣的概念,程序員看到的就是一個一個的組件,應(yīng)用程序員利用這些組件來架構(gòu)成一個所謂的應(yīng)用。Android是徹底的組件化思想構(gòu)建,一開始的應(yīng)用程序概念就是Activity,Service,Broadcastreceivers,ContentProvider,Intent,Task。這些概念體現(xiàn)了一個人機交互的模型本質(zhì):界面呈現(xiàn),發(fā)起請求,響應(yīng)請求,內(nèi)容交互,消息接收處理。Activity是Android應(yīng)用的核心概念,Activity為用戶交互管理者,有一個可視界面呈現(xiàn),Activity可以到處存在
3、,提供服務(wù),消除空間差別,Activity是一個獨立的個體,更能表現(xiàn)面向?qū)ο蟮膶嵸|(zhì)。這個個體需要接受另外的個體的消息,可以隨時發(fā)起對另外一個個體的請求。個體是自由的,Android中你可以開始一個Activity,但是沒有權(quán)利消滅一個Activity,這是個體權(quán)利的體現(xiàn),個體的消滅是由系統(tǒng)決定的。Android應(yīng)用程序構(gòu)成ActivityContentProviderBroadcastReceiverServerIntentAndroidIPC結(jié)構(gòu)IPC建立示意圖Android啟動過程ActivityActivity是為用戶操作
4、而展示的可視化用戶界面。比如說,一個activity可以展示一個菜單項列表供用戶選擇,或者顯示一些包含說明的照片。一個短消息應(yīng)用程序可以包括一個用于顯示做為發(fā)送對象的聯(lián)系人的列表的activity,一個給選定的聯(lián)系人寫短信的activity以及翻閱以前的短信和改變設(shè)置的activity。盡管它們一起組成了一個內(nèi)聚的用戶界面,但其中每個activity都與其它的保持獨立。每個都是以Activity類為基類的子類實現(xiàn)。一個應(yīng)用程序可以只有一個activity,或者,如剛才提到的短信應(yīng)用程序那樣,包含很多個。每個activity的作用
5、,以及其數(shù)目,自然取決于應(yīng)用程序及其設(shè)計。一般情況下,總有一個應(yīng)用程序被標(biāo)記為用戶在應(yīng)用程序啟動的時候第一個看到的。從一個activity轉(zhuǎn)向另一個的方式是靠當(dāng)前的activity啟動下一個。每個activity都被給予一個默認(rèn)的窗口以進(jìn)行繪制。一般情況下,這個窗口是滿屏的,但它也可以是一個小的位于其它窗口之上的浮動窗口。窗口顯示的可視內(nèi)容是由一系列視圖構(gòu)成的,這些視圖均繼承自View基類。每個視圖均控制著窗口中一塊特定的矩形空間。父級視圖包含并組織它子視圖的布局。葉節(jié)點視圖(位于視圖層次最底端)在它們控制的矩形中進(jìn)行繪制,并對
6、用戶對其直接操作做出響應(yīng)。所以,視圖是activity與用戶進(jìn)行交互的界面。比如說,視圖可以顯示一個小圖片,并在用戶指點它的時候產(chǎn)生動作。Android有很多既定的視圖供用戶直接使用,包括按鈕、文本域、卷軸、菜單項、復(fù)選框等等。Service服務(wù)沒有可視化的用戶界面,而是在一段時間內(nèi)在后臺運行。比如說,一個服務(wù)可以在用戶做其它事情的時候在后臺播放背景音樂、從網(wǎng)絡(luò)上獲取一些數(shù)據(jù)或者計算一些東西并提供給需要這個運算結(jié)果的activity使用。每個服務(wù)都繼承自Service基類。一個媒體播放器播放播放列表中的曲目是一個不錯的例子。播放
7、器應(yīng)用程序可能有一個或多個activity來給用戶選擇歌曲并進(jìn)行播放。然而,音樂播放這個任務(wù)本身不應(yīng)該為任何activity所處理,因為用戶期望在他們離開播放器應(yīng)用程序而開始做別的事情時,音樂仍在繼續(xù)播放。為達(dá)到這個目的,媒體播放器activity應(yīng)該啟用一個運行于后臺的服務(wù)。而系統(tǒng)將在這個activity不再顯示于屏幕之后,仍維持音樂播放服務(wù)的運行。你可以連接至(綁定)一個正在運行的服務(wù)(如果服務(wù)沒有運行,則啟動之)。連接之后,你可以通過那個服務(wù)暴露出來的接口與服務(wù)進(jìn)行通訊。對于音樂服務(wù)來說,這個接口可以允許用戶暫停、回退、停
8、止以及重新開始播放。如同activity和其它組件一樣,服務(wù)運行于應(yīng)用程序進(jìn)程的主線程內(nèi)。所以它不會對其它組件或用戶界面有任何干擾,它們一般會派生一個新線程來進(jìn)行一些耗時任務(wù)(比如音樂回放)。BroadcastReceiverBroadcastReceiver是