Android應(yīng)用程序架構(gòu)_第1頁(yè)
Android應(yīng)用程序架構(gòu)_第2頁(yè)
Android應(yīng)用程序架構(gòu)_第3頁(yè)
Android應(yīng)用程序架構(gòu)_第4頁(yè)
Android應(yīng)用程序架構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Android應(yīng)用程序架構(gòu)1單元目標(biāo)了解Android資源文件的種類掌握資源的根本使用方法了解活動(dòng)〔Activity〕組件了解效勞〔Service〕組件了解播送接收者〔BroadCastreceivers〕組件了解內(nèi)容提供者〔ContentProviders〕組件掌握AndroidManifest.xml文件結(jié)構(gòu)2本單元根底知識(shí)Android應(yīng)用程序中的資源Android的4種應(yīng)用程序組件AndroidManifest.xml文件的結(jié)構(gòu)3Android應(yīng)用程序中的資源任何類型的程序都要使用資源,Android應(yīng)用程序使用的資源大局部都被封裝在apk文件中,并隨apk文件一起發(fā)布。4Android程序中的資源-存放位置EclipseADT新建工程向?qū)赡夸浗Y(jié)構(gòu)如下:5Android程序中的資源-存放位置〔續(xù)〕在上圖中,res文件夾用于存放資源,該目錄下有3個(gè)子目錄:drawable:它包含了icon.png,可以判斷用于圖像文件layout:從名稱可以判斷是用來(lái)保存布局文件的values:翻開(kāi)其中包含的strings.xml文件可以看出,內(nèi)容均為基于XML格式的key-value對(duì),可以判斷values目錄是用來(lái)保存字符串資源的6Android應(yīng)用程序中的資源-種類Android支持3種類型的資源:XML文件圖像任意類型的資源,如音視頻以上文件放在res目錄的不同子目錄中,編譯Android應(yīng)用程序時(shí),系統(tǒng)會(huì)使用一個(gè)資源文件編譯程序〔aapt〕對(duì)這些資源文件進(jìn)行編譯7Android應(yīng)用程序中的資源-種類〔續(xù)〕Android支持資源列表:res\anim:用于存放幀動(dòng)畫(huà)或補(bǔ)間動(dòng)畫(huà)文件res\drawable:可以存放多種格式的圖像文件,例如,bmp、png、gif等,目錄中的圖像不需要分辨率非常高,aapt工具會(huì)優(yōu)化該目錄中的圖像文件res\layout:該目錄用于存放XML布局文件res\values:使用該目錄下XML文件的內(nèi)容作為資源,這些文件定義了各種類型的key-value對(duì),根據(jù)不同的標(biāo)簽定義不同類型的key-value對(duì)。例如,通過(guò)<string>標(biāo)簽定義字符串key-value對(duì),通過(guò)<color>標(biāo)簽定義顏色值的key-value對(duì)8Android應(yīng)用程序中的資源-種類〔續(xù)〕Android支持資源列表:res\xml:該目錄中的文件可以是任意類型的XML文件,這些XML文件可以在運(yùn)行時(shí)被讀取res\raw:該文件也被封裝在apk文件中,但不會(huì)被編譯,可以存放任意類型的文件在任一個(gè)目錄中放入資源文件后,ADT會(huì)在gen目錄中建立一個(gè)R.java文件,該文件為一個(gè)R類,該類為每一個(gè)資源定義了唯一的ID,通過(guò)這些ID可以引用這些資源9Android應(yīng)用程序的資源-使用方法在HelloWorld例如中,R.java內(nèi)容如下:publicfinalclassR{ publicstaticfinalclassdrawable{ publicstaticfinalinticon=0x7f020000; } publicstaticfinalclasslayout{ publicstaticfinalintmai=0x7f030000; } publicstaticfinalclassstring{ publicstaticfinalinthello=0x7f040000; publicstaticfinalintapp_name=0x7f040001; }}10Android應(yīng)用程序的資源-使用方法〔續(xù)〕在HelloWorld例如中,通過(guò)R.java文件內(nèi)容,可以看出ADT為res目錄中每一個(gè)子目錄或標(biāo)簽都生成了一個(gè)靜態(tài)子類,同樣,它也為XML布局文件中指定id屬性的組件生成了唯一的ID,并封裝在id子類中,這樣,在Android應(yīng)用程序中就可以通過(guò)ID使用這些組件11Android應(yīng)用程序的資源-使用方法〔續(xù)〕資源既可以在程序的代碼中使用,也可以在XML文件中使用應(yīng)用程序Java代碼中:setTitle(R.string.app_name),可以看到在使用資源時(shí)直接引用了這個(gè)ID值,直接使用0x7f040001也可以,但為了使程序更容易維護(hù),一般會(huì)直接使用在R的內(nèi)嵌類中定義的變量名XML文件中:android:text=“@string/hello”,其中hello就是資源文件string.xml中的一個(gè)字符串12Android應(yīng)用程序組件Android應(yīng)用程序中最核心的特性就是可以調(diào)用其他應(yīng)用程序的資源。例如:如果應(yīng)用程序恰好需要一個(gè)顯示圖像列表的功能,而另一個(gè)應(yīng)用程序正好有這個(gè)功能,只需要調(diào)用這個(gè)應(yīng)用程序中的圖像列表功能即可。Android如何實(shí)現(xiàn)這個(gè)特性?這與Android的組件設(shè)計(jì)密不可分Android應(yīng)用程序沒(méi)有一個(gè)單獨(dú)的入口點(diǎn),它是由一系列組件組成,在需要時(shí),系統(tǒng)可以單獨(dú)實(shí)例化它們Android有四種類型的組件13Android應(yīng)用程序組件-活動(dòng)組件一個(gè)活動(dòng)代表了一個(gè)可視化用戶界面,例如,一個(gè)活動(dòng)可以是一個(gè)登錄窗口。相當(dāng)于C/S程序中的窗體或者Web程序的頁(yè)面,每個(gè)Activity都提供了一個(gè)可視化的區(qū)域一個(gè)應(yīng)用程序中可以只有一個(gè)Activity,或者包含多個(gè),這完全取決于應(yīng)用程序設(shè)計(jì)者。典型情況下,當(dāng)用戶啟動(dòng)程序時(shí),總有一個(gè)Activity顯示給用戶通常,當(dāng)前Activity負(fù)責(zé)啟動(dòng)下一個(gè)Actitity,來(lái)完成從一個(gè)Activity到另一個(gè)Activity的轉(zhuǎn)變14Android應(yīng)用程序組件-活動(dòng)組件〔續(xù)〕一個(gè)窗體的真實(shí)內(nèi)容由從View基類繼承而來(lái)的視圖負(fù)責(zé)呈現(xiàn)。每個(gè)視圖都控制著窗體中的一塊長(zhǎng)方形區(qū)域父視圖包含和組織了它們孩子視圖的布局顯示在長(zhǎng)方形的最底層視圖負(fù)責(zé)控制和響應(yīng)用戶的操作

例如,一個(gè)視圖可以顯示一個(gè)小的圖像,并且當(dāng)用戶點(diǎn)擊圖像是做出響應(yīng)Android有一系列真實(shí)的視圖-包括了按鈕、文本輸入框、滾動(dòng)條、菜單、復(fù)選框等15Android應(yīng)用程序組件-效勞組件效勞沒(méi)有可視化界面,但可以在后臺(tái)運(yùn)行。例如,當(dāng)用戶關(guān)注其他事情時(shí),后臺(tái)音樂(lè)的播放。每個(gè)效勞都需要繼承Service基類其他程序可以通過(guò)某個(gè)效勞暴露出的接口來(lái)連接運(yùn)行中的效勞,比方在音樂(lè)效勞中,可以通過(guò)其暴露的接口來(lái)暫停、重播、停止像活動(dòng)和其他組件一樣,效勞運(yùn)行在應(yīng)用程序進(jìn)程的主線程上,所以它們不會(huì)阻礙其他組件或者用戶界面,它們經(jīng)常生成其他線程來(lái)進(jìn)行消耗時(shí)間的任務(wù)16Android應(yīng)用程序組件-播送接收者組件播送接收者的唯一作用就是接收播送通知,并對(duì)此做出響應(yīng)大多數(shù)播送來(lái)源自系統(tǒng),例如,時(shí)區(qū)改變的播送通知、電池電量缺乏、用戶改變了語(yǔ)言等應(yīng)用程序可以初始化播送,例如,通知其他應(yīng)用程序數(shù)據(jù)已經(jīng)下載完畢可用了應(yīng)用程序可以使用多個(gè)播送接收者來(lái)響應(yīng)任何它覺(jué)得重要的通知,所有播送接收者都繼承自BroadcastReceiver基類17Android應(yīng)用程序組件-播送接收者組件播送接收者沒(méi)有用戶界面,但是可以在接收播送后啟動(dòng)Activity,或者可以使用NotificationManager來(lái)通知用戶。通知可以用各種方式,閃屏、振動(dòng)、播放音樂(lè)等。大多數(shù)情況下,在狀態(tài)欄放置一個(gè)圖標(biāo),通過(guò)該圖標(biāo)用戶可以獲得通知消息18Android應(yīng)用程序組件-內(nèi)容提供者組件內(nèi)容提供者可以為其他應(yīng)用程序提供數(shù)據(jù)。這些數(shù)據(jù)可以保存在文件系統(tǒng)中,在SQLite數(shù)據(jù)庫(kù)中,或者其他方式保存內(nèi)容提供者繼承了ContentProvider基類,來(lái)實(shí)現(xiàn)一系列標(biāo)準(zhǔn)的方法讓其他應(yīng)用程序可以獲取和存儲(chǔ)內(nèi)容提供者支持的數(shù)據(jù),但是應(yīng)用程序不能夠直接調(diào)用這些方法,而是通過(guò)調(diào)用ContentResolver對(duì)象的方法來(lái)讀寫(xiě)19AndroidManifest.xml文件每一個(gè)應(yīng)用程序都必須在根目錄有一個(gè)名為AndroidManifest.xml的文件,這個(gè)清單文件告訴了系統(tǒng)該應(yīng)用程序的相關(guān)信息,清單文件相關(guān)作用如下:定義應(yīng)用程序的Java包,這個(gè)包名將作為應(yīng)用程序的唯一標(biāo)識(shí)定義應(yīng)用程序的四個(gè)組件-活動(dòng)、效勞、播送接收者、內(nèi)容提供者。定義的信息主要是與組件對(duì)應(yīng)的類名以及這些組件所具有的能力決定了哪個(gè)Activity將作為第一個(gè)運(yùn)行的Activity20AndroidManifest.xml文件〔續(xù)〕AndroidManifest.xml清單文件相關(guān)作用如下〔續(xù)〕:聲明了為了訪問(wèn)API中受保護(hù)的部份以及與其他應(yīng)用

溫馨提示

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

評(píng)論

0/150

提交評(píng)論