android入门之三【应用程序组成】
一般的android應(yīng)用程序由4部分組成分別是:
Activity
Broadcast Intent Receiver
Service
Content Provider
????? 并不是說(shuō)所有的應(yīng)用程序都是由這四個(gè)部分組成,有的簡(jiǎn)單的應(yīng)用只需要Activity就可以了,有的只需要Broadcast Intent Receiver就可以了。
????? 在android項(xiàng)目里邊有個(gè)AndroidManifest.xml文件,這個(gè)文件非常重重要,就和Asp.net中的web.config文件一樣,應(yīng)用中要用到的組件都要首先在這個(gè)文件中
進(jìn)行描述聲明后才可以正常使用,否則程序中用到了上述的組件了,也不會(huì)起作用。
一、Activity 組件
???????? Activity是開(kāi)發(fā)android應(yīng)用的過(guò)程中使用的最頻繁的組件,它是android的最基本的組件之一。在android程序中Activity代表了手機(jī)的一個(gè)屏幕,好比Asp.net應(yīng)用中的一個(gè)網(wǎng)頁(yè),一個(gè)android應(yīng)用相當(dāng)于一個(gè)web站點(diǎn)。在Activity中我們可以添加View,并且對(duì)View做一些操作,View可以理解為一個(gè)UI容器,在這個(gè)容器中可以添加很多UI 元素,比如:Button,TextView,EditView,List等,這些豐富的UI元素組成了和用戶交互的時(shí)的豐富的用戶界面,Activity控制著View中各個(gè)元素的邏輯處理和導(dǎo)航,比如Activity1跳轉(zhuǎn)到Activity2,當(dāng)然也可以在Activity2關(guān)閉的時(shí)候返回一個(gè)值給Activity1這個(gè)和Asp.net中彈出一個(gè)對(duì)話框,當(dāng)關(guān)閉對(duì)話框時(shí)返回一個(gè)值給原頁(yè)面是一樣的,這樣在開(kāi)發(fā)中解決很多問(wèn)題是非常方便的。
????? Android的導(dǎo)航是由一個(gè)stack控制,當(dāng)打開(kāi)一個(gè)新的屏幕時(shí)原來(lái)的屏幕會(huì)被置為暫停狀態(tài),并且壓入歷史堆棧,用戶可以通過(guò)返回操作來(lái)彈出棧頂?shù)钠聊徊⒃O(shè)置為當(dāng)前操作的屏幕界面。android會(huì)把每個(gè)應(yīng)用從開(kāi)始到當(dāng)前的每一個(gè)屏幕的頁(yè)面都?jí)喝氲蕉褩V?#xff0c;在開(kāi)發(fā)過(guò)程中可以有選擇的移除一些堆棧中不會(huì)用到的界面。Activity是由android系統(tǒng)進(jìn)行維護(hù)的,它有自己的生命周期。
二、Broadcast Intent Receiver組件
????? 可以使用BroadcastReceiver來(lái)讓應(yīng)用對(duì)一個(gè)外部的事件作出響應(yīng),因此利用這個(gè)組件可以做一些很有意思的事情,我之前寫的一篇Android中發(fā)送和接收短信就是用BroadcastReceiver組件來(lái)實(shí)現(xiàn)的。當(dāng)電話和短信這個(gè)外部事件發(fā)生時(shí)就可以利用BroadcastReceiver組件來(lái)進(jìn)行處理。BroadcastReceiver不能直接生成與用戶交互的界面,因?yàn)榻缑媸怯葾ctivity負(fù)責(zé)的,換句話說(shuō)對(duì)用戶來(lái)說(shuō)是不透明的,用戶看不到它,這個(gè)和Windows Service 類似,但是BroadccastReceiver可以通過(guò)NotificationManager來(lái)通知用戶發(fā)生了什么事情,也可以使用Toast來(lái)通知用戶。要使用BroadcastReceiver組件,首先要在AndroidManifest.xml中進(jìn)行注冊(cè)或者在代碼中使用Context.registerReceiver()進(jìn)行注冊(cè),只要注冊(cè)了,當(dāng)事件發(fā)生了,即使應(yīng)用沒(méi)有啟動(dòng),android也會(huì)自動(dòng)啟動(dòng)應(yīng)用,來(lái)響應(yīng)發(fā)生的事件。
三、Service組件
????? Service是一種程序,它可以運(yùn)行很長(zhǎng)時(shí)間,但它和BroadcastReceiver組件一樣也沒(méi)有界面,這些服務(wù)可以提供系統(tǒng)的某些能力,來(lái)供調(diào)用,它更像是一組API。例如播放音樂(lè)的Sevice,它可以控制音樂(lè)的播放,停止。通過(guò)startService(Intent service)可以啟動(dòng)一個(gè)service,可以通過(guò)Context.BindService()綁定一個(gè)Service。
四、Content Provider組件
???? 數(shù)據(jù)在android中是私有的不能進(jìn)行共享,這些數(shù)據(jù)包括文件和數(shù)據(jù)庫(kù),但是如果一個(gè)應(yīng)用要使用另一個(gè)應(yīng)用的數(shù)據(jù)在怎么做呢?那么這個(gè)時(shí)候Content Provider就派上用場(chǎng)了,一個(gè)Content Provider定義了一組標(biāo)準(zhǔn)的方法的接口,能使其它應(yīng)用保存和讀取此Content Privider的各種數(shù)據(jù),那么怎么來(lái)實(shí)現(xiàn)呢?那就是通過(guò)去實(shí)現(xiàn)Contnent Privider的接口就可以了,Content Privider已經(jīng)實(shí)現(xiàn)了數(shù)據(jù)的封裝和處理,外界是看不到數(shù)據(jù)的具體存儲(chǔ)細(xì)節(jié),只需要通過(guò)這些標(biāo)準(zhǔn)的接口打交道就可以了,可以讀取數(shù)據(jù),刪除數(shù)據(jù),插入數(shù)據(jù)等等操作。例如android的基本應(yīng)用Contects就就通過(guò)這種方式共享通訊錄數(shù)據(jù)的,其它應(yīng)用可以通過(guò)Content Provider組件操作通訊錄中的數(shù)據(jù)。
總結(jié),android應(yīng)用的開(kāi)發(fā)過(guò)程中主要使用的是以上的四個(gè)組建,靈活的使用這些組建可以滿足大部分應(yīng)用,其中Activity的使用是最頻繁的,許多應(yīng)用基本上都是有若干的Activity的相互交互構(gòu)成的。
轉(zhuǎn)載于:https://www.cnblogs.com/vaiyanzi/archive/2010/05/16/1736989.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的android入门之三【应用程序组成】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c# response输出文件实例(14
- 下一篇: 使用LoadRunner测试WMS