Android平臺(tái)開發(fā)簡(jiǎn)介_第1頁
Android平臺(tái)開發(fā)簡(jiǎn)介_第2頁
Android平臺(tái)開發(fā)簡(jiǎn)介_第3頁
Android平臺(tái)開發(fā)簡(jiǎn)介_第4頁
Android平臺(tái)開發(fā)簡(jiǎn)介_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Android平臺(tái)開發(fā)簡(jiǎn)簡(jiǎn)介平臺(tái)介紹及及開發(fā)基本本流程2011-4月什么是Android?Android是Google在2007年11月5日推出的開開源手機(jī)操操作系統(tǒng)。。目前Android在中國的發(fā)發(fā)展是非非常?;鸬模瑸闉榱斯?jié)省研研發(fā)費(fèi)用,,國內(nèi)很多多的手機(jī)廠廠商和移動(dòng)動(dòng)運(yùn)營(yíng)商紛紛紛加入到到了android陣營(yíng),其中中包括中國國移動(dòng),中中國聯(lián)通,中國電信,,華為,聯(lián)聯(lián)想等大企企業(yè)。在中中國不管是是知名的手手機(jī)生產(chǎn)廠廠商還是山山寨手機(jī)廠廠商,都已已經(jīng)開始生生產(chǎn)Android操作系統(tǒng)的的手機(jī)。另另外android應(yīng)用的范圍圍不僅僅在在手機(jī),還還被應(yīng)用在在汽車、平平板電腦、、和智能上上網(wǎng)設(shè)備上上,聽說國國外已經(jīng)有有了安裝有有Android系統(tǒng),并且且能夠上網(wǎng)網(wǎng)的智能電電飯煲,用用戶在千里里之外就可可以操作電電飯煲進(jìn)行行煮飯。由于大家大大多使用的的手機(jī)都屬屬傻瓜手機(jī)機(jī),也就是是打打電話話、發(fā)發(fā)短短信。從今今天開始,,大家就應(yīng)應(yīng)該改變這這個(gè)觀念了了,你們需需要把智能能手機(jī)看作作是一臺(tái)電電腦,它能能完成電腦腦所能完成成的一切。。所以你可可以像在電電腦一樣,,在智能手手機(jī)上安裝裝軟件,以以滿足你工工作和生活活的需要。。如何安裝AndroidSDK和Eclipse插件所需開發(fā)環(huán)環(huán)境:JDK5或以上版本本(僅有JRE不夠)、Eclipse3.4或以上版本本,推薦使用““伽利略””版。下載用于在在Eclipse開發(fā)android應(yīng)用的ADT插件在企業(yè)開發(fā)發(fā)中,很多多程序員使使用EclipseIDE作為應(yīng)用的的開發(fā)環(huán)境境。為了使使得Android應(yīng)用的創(chuàng)建建,運(yùn)行和和調(diào)試更加加方便快捷捷。Android的開發(fā)團(tuán)隊(duì)隊(duì)專門針對(duì)對(duì)EclipseIDE定制了一個(gè)個(gè)插件:AndroidDevelopmentTools(ADT)下載地址::/android/ADT-0.9.8.zip安裝Eclipse插件(ADT)啟動(dòng)Eclipse,選擇Help>InstallNewSoftware,在出現(xiàn)的的對(duì)話框里里,點(diǎn)擊Add按鈕,在對(duì)對(duì)話框的name一欄輸入“ADT””,然后點(diǎn)擊Archive...,瀏覽和選選擇已經(jīng)下下載的ADT插件壓縮文件。。點(diǎn)擊OK.。返回可用軟軟件的視圖圖,你會(huì)看看到這個(gè)插插件,然后選擇DeveloperTools(會(huì)選中下面面的“AndroidDeveloperTools””和“AndroidEditors““),點(diǎn)擊Next,最后重啟啟Eclipse。下載安裝AndroidSDK:AndroidSDK包含了開發(fā)發(fā)Android應(yīng)用所依賴賴的jar文件、運(yùn)行行環(huán)境及相相關(guān)工具。。下載地址::/android/android-sdk_r07-windows.zip下載完SDK后,把.zip文件解壓到到你電腦上上合適位置置。啟動(dòng)Eclipse,選擇window->preferences,在打開的的視圖左邊邊點(diǎn)擊android,在右邊的的SDKLocation中選擇AndroidSDK所在位置。。開發(fā)第一個(gè)個(gè)Android應(yīng)用打開Eclipse,新建項(xiàng)目目(點(diǎn)擊FileNewProject),在項(xiàng)目列列表中展開開Android目錄,選擇擇AndroidProject,如下圖::開發(fā)第一個(gè)個(gè)Android應(yīng)用開發(fā)第一個(gè)個(gè)Android應(yīng)用點(diǎn)擊”finish”即可完成項(xiàng)項(xiàng)目的創(chuàng)建建,創(chuàng)建后后的項(xiàng)目已已經(jīng)是一個(gè)個(gè)可運(yùn)行的的Android應(yīng)用,我們們可以通過過下面方式式運(yùn)行此應(yīng)應(yīng)用:點(diǎn)擊工具欄欄上機(jī)器人人形狀的虛虛擬設(shè)備管管理器(簡(jiǎn)簡(jiǎn)稱“AVD“),如下::開發(fā)第一個(gè)個(gè)Android應(yīng)用“尚未注冊(cè)網(wǎng)網(wǎng)絡(luò)”錯(cuò)誤誤信息的解解決辦法打開開Android模擬擬器器時(shí)時(shí),,出出現(xiàn)現(xiàn)無無信信號(hào)號(hào),,拔拔打打電電話話或或發(fā)發(fā)短短信信時(shí)時(shí),,提提示示““尚尚未未注注冊(cè)冊(cè)網(wǎng)網(wǎng)絡(luò)絡(luò)””錯(cuò)錯(cuò)誤誤信信息息的的解解決決方方案案如如下下。。場(chǎng)景景一一::你你的的電電腦腦沒沒有有連連接接上上互互聯(lián)聯(lián)網(wǎng)網(wǎng),,同同時(shí)時(shí)也也沒沒有有在在局局域域網(wǎng)網(wǎng)。。解決決辦辦法法::右右鍵鍵點(diǎn)點(diǎn)擊擊網(wǎng)網(wǎng)上上鄰鄰居居,選擇擇"屬性性",在網(wǎng)網(wǎng)絡(luò)絡(luò)連連接接窗窗口口中中右右鍵鍵點(diǎn)點(diǎn)擊擊"本地地連連接接",選擇擇"屬性性",設(shè)置置TCP/IP屬性性如如下下:IP地址址:00子網(wǎng)網(wǎng)掩掩碼碼:默認(rèn)認(rèn)網(wǎng)網(wǎng)關(guān)關(guān):00首選選DNS服務(wù)務(wù)器器:00場(chǎng)景景二二::你你的的電電腦腦沒沒有有連連接接上上互互聯(lián)聯(lián)網(wǎng)網(wǎng),,但但在在局局域域網(wǎng)網(wǎng)。。解決決辦辦法法::右右鍵鍵點(diǎn)點(diǎn)擊擊網(wǎng)網(wǎng)上上鄰鄰居居,選擇擇"屬性性",在網(wǎng)網(wǎng)絡(luò)絡(luò)連連接接窗窗口口中中右右鍵鍵點(diǎn)點(diǎn)擊擊"本地地連連接接",選擇擇"屬性性",設(shè)置置TCP/IP屬性性如如下下:IP地址址:設(shè)置置成成你你所所在在局局域域網(wǎng)網(wǎng)的的IP,如如::00子網(wǎng)網(wǎng)掩掩碼碼:設(shè)置置成成你你所所在在局局域域網(wǎng)網(wǎng)的的掩掩碼碼,,如如::默認(rèn)認(rèn)網(wǎng)網(wǎng)關(guān)關(guān):設(shè)置置成成你你所所在在局局域域網(wǎng)網(wǎng)的的網(wǎng)網(wǎng)關(guān)關(guān),,一一般般網(wǎng)網(wǎng)關(guān)關(guān)的的IP格式式為為::*.*.*.1,如如::首選選DNS服務(wù)務(wù)器器:設(shè)置置成成你你所所在在局局域域網(wǎng)網(wǎng)的的路路由由器器IP,一一般般路路由由器器的的IP格式式為為::*.*.*.1,如如::最后后一一種種解解決決方方案案是是::讓讓你你的的電電腦腦連連接接上上互互聯(lián)聯(lián)網(wǎng)網(wǎng)。。開發(fā)發(fā)第第一一個(gè)個(gè)Android應(yīng)用用在項(xiàng)項(xiàng)目目上上右右鍵鍵點(diǎn)點(diǎn)擊擊runasAndroidapplication,如如下下圖圖:Android應(yīng)用用程程序序架架構(gòu)構(gòu)src/java原代代碼碼存存放放目目錄錄gen/自動(dòng)動(dòng)生生成成目目錄錄gen目錄錄中中存存放放所所有有由由Android開發(fā)發(fā)工工具具自自動(dòng)動(dòng)生生成成的的文文件件。。目目錄錄中中最最重重要要的的就就是是R.java文件件。。這這個(gè)個(gè)文文件件由由Android開發(fā)發(fā)工工具具自自動(dòng)動(dòng)產(chǎn)產(chǎn)生生的的。。Android開發(fā)發(fā)工工具具會(huì)會(huì)自自動(dòng)動(dòng)根根據(jù)據(jù)你你放放入入res目錄錄的的xml界面面文文件件、、圖圖標(biāo)標(biāo)與與常常量量,,同同步步更更新新修修改改R.java文件件。。正正因因?yàn)闉镽.java文件件是是由由開開發(fā)發(fā)工工具具自自動(dòng)動(dòng)生生成成的的,,所所以以我我們們應(yīng)應(yīng)避避免免手手工工修修改改R.java。R.java在應(yīng)應(yīng)用用中中起起到到了了字字典典的的作作用用,,它它包包含含了了界界面面、、圖圖標(biāo)標(biāo)、、常常量量等等各各種種資資源源的的id,通過R.java,應(yīng)用可以很很方便地找到到對(duì)應(yīng)資源。。另外編繹器器也會(huì)檢查R.java列表中的資源源是否被使用用到,沒有被被使用到的資資源不會(huì)編繹繹進(jìn)軟件中,,這樣可以減減少應(yīng)用在手手機(jī)占用的空空間。res/資源(Resource)目錄在這個(gè)目錄中中我們可以存存放應(yīng)用使用用到的各種資資源,如xml界面文件,圖圖片或數(shù)據(jù)。。assets資源目錄Android除了提供/res目錄存放資源源文件外,在在/assets目錄也可以存存放資源文件件,而且/assets目錄下的資源源文件不會(huì)在在R.java自動(dòng)生成ID,所以讀取/assets目錄下的文件件必須指定文文件的路徑,,如:file:///android_asset/xxx.3gpAndroidManifest.xml項(xiàng)目清單文件件這個(gè)文件列出出了應(yīng)用程序序所提供的功功能,以后你你開發(fā)好的各各種組件需要要在該文件中中進(jìn)行配置,,如果應(yīng)用使使用到了系統(tǒng)統(tǒng)內(nèi)置的應(yīng)用用(如電話服務(wù)、、互聯(lián)網(wǎng)服務(wù)務(wù)、短信服務(wù)務(wù)、GPS服務(wù)等等),你還需在該該文件中聲明明使用權(quán)限。。perties項(xiàng)目環(huán)境信息息,一般是不需需要修改此文文件Android中的顯示單位位px(pixels)像素一般HVGA代表320x480像素,這個(gè)用用的比較多。。dip或dp(deviceindependentpixels)設(shè)備獨(dú)立像素素這個(gè)和設(shè)備硬硬件有關(guān),一一般為了支持持WVGA、HVGA和QVGA推薦使用這個(gè)個(gè),不依賴像像素。sp(scaledpixels—bestfortextsize)比例像素主要處理字體體的大小,可可以根據(jù)系統(tǒng)統(tǒng)的字體自適適應(yīng)。除了上面三個(gè)個(gè)顯示單位,,下面還有幾幾個(gè)不太常用用:in(inches)英寸mm(millimeters)毫米pt(points)點(diǎn),1/72英寸為了適適應(yīng)不不同分分辨率率,不不同的的像素素密度度,推推薦使使用dip,文字字使用用sp。Android開發(fā)平平臺(tái)是是開放放的平平臺(tái),,而位位于四四層框框架頂頂端的的應(yīng)用用開發(fā)發(fā),必必然涉涉及到到Android組件。。本文文將為為大家家詳細(xì)細(xì)介紹紹Android組件。。組件((Component),在在談及及所謂謂架構(gòu)構(gòu)和重重用的的時(shí)候候,是是一個(gè)個(gè)重要要的事事情。。很多多時(shí)候候都會(huì)會(huì)說基基于組組件的的軟件件架構(gòu)構(gòu),指指的是是期望望把程程序做做樂高高似的的,有有一堆堆接口口標(biāo)準(zhǔn)準(zhǔn)封裝裝完整整的組組件放放在哪哪里,,想用用的時(shí)時(shí)候取取上幾幾個(gè)一一搭配配,整整個(gè)程程序就就構(gòu)建建完成成了。。在開篇篇的時(shí)時(shí)候就就在說說,Android是一個(gè)個(gè)為組組件化化而搭搭建的的平臺(tái)臺(tái),它它引入入所謂謂Mash-Up的概念念,這這使得得你在在應(yīng)用用的最最上層層,想想做的的不組組件化化都是是很困困難的的一件件事,,具體體說來來,Android有四大大組件件:Activity、Service、BroadcastReceiver、ContentProvider。Android四大組組建Activity是為用用戶操操作而而展示示的可可視化化用戶戶界面面。比比如說說,一一個(gè)activity可以展展示一一個(gè)菜菜單項(xiàng)項(xiàng)列表表供用用戶選選擇,,或者者顯示示一些些包含含說明明的照照片。。一個(gè)個(gè)短消消息應(yīng)應(yīng)用程程序可可以包包括一一個(gè)用用于顯顯示做做為發(fā)發(fā)送對(duì)對(duì)象的的聯(lián)系系人的的列表表的activity,一個(gè)個(gè)給選選定的的聯(lián)系系人寫寫短信信的activity以及翻翻閱以以前的的短信信和改改變?cè)O(shè)設(shè)置的的activity。盡管管它們們一起起組成成了一一個(gè)內(nèi)內(nèi)聚的的用戶戶界面面,但但其中中每個(gè)個(gè)activity都與其其它的的保持持獨(dú)立立。每每個(gè)都都是以以Activity類為基基類的的子類類實(shí)現(xiàn)現(xiàn)。一個(gè)應(yīng)應(yīng)用程程序可可以只只有一一個(gè)activity,或者者,如如剛才才提到到的短短信應(yīng)應(yīng)用程程序那那樣,,包含含很多多個(gè)。。每個(gè)個(gè)activity的作用用,以以及其其數(shù)目目,自自然取取決于于應(yīng)用用程序序及其其設(shè)計(jì)計(jì)。一一般情情況下下,總總有一一個(gè)應(yīng)應(yīng)用程程序被被標(biāo)記記為用用戶在在應(yīng)用用程序序啟動(dòng)動(dòng)的時(shí)時(shí)候第第一個(gè)個(gè)看到到的。。從一一個(gè)activity轉(zhuǎn)向另一個(gè)個(gè)的方式是是靠當(dāng)前的的activity啟動(dòng)下一個(gè)個(gè)。每個(gè)activity都被給予一一個(gè)默認(rèn)的的窗口以進(jìn)進(jìn)行繪制。。一般情況況下,這個(gè)個(gè)窗口是滿滿屏的,但但它也可以以是一個(gè)小小的位于其其它窗口之之上的浮動(dòng)動(dòng)窗口。一一個(gè)activity也可以使用用超過一個(gè)個(gè)的窗口───比如,,在activity運(yùn)行過程中中彈出的一一個(gè)供用戶戶反應(yīng)的小小對(duì)話框,,或是當(dāng)用用戶選擇了了屏幕上特特定項(xiàng)目后后顯示的必必要信息。。窗口顯示的的可視內(nèi)容容是由一系系列視圖構(gòu)構(gòu)成的,這這些視圖均均繼承自View基類。每個(gè)個(gè)視圖均控控制著窗口口中一塊特特定的矩形形空間。父父級(jí)視圖包包含并組織織它子視圖圖的布局。。葉節(jié)點(diǎn)視視圖(位于于視圖層次次最底端))在它們控控制的矩形形中進(jìn)行繪繪制,并對(duì)對(duì)用戶對(duì)其其直接操作作做出響應(yīng)應(yīng)。所以,,視圖是activity與用戶進(jìn)行行交互的界界面。比如如說,視圖圖可以顯示示一個(gè)小圖圖片,并在在用戶指點(diǎn)點(diǎn)它的時(shí)候候產(chǎn)生動(dòng)作作。Android有很多既定定的視圖供供用戶直接接使用,包包括按鈕、、文本域、、卷軸、菜菜單項(xiàng)、復(fù)復(fù)選框等等等。Activity活動(dòng)服務(wù)沒有可可視化的用用戶界面,,而是在一一段時(shí)間內(nèi)內(nèi)在后臺(tái)運(yùn)運(yùn)行。比如如說,一個(gè)個(gè)服務(wù)可以以在用戶做做其它事情情的時(shí)候在在后臺(tái)播放放背景音樂樂、從網(wǎng)絡(luò)絡(luò)上獲取一一些數(shù)據(jù)或或者計(jì)算一一些東西并并提供給需需要這個(gè)運(yùn)運(yùn)算結(jié)果的的activity使用。每個(gè)個(gè)服務(wù)都繼繼承自Service基類。一個(gè)媒體播播放器播放放播放列表表中的曲目目是一個(gè)不不錯(cuò)的例子子。播放器器應(yīng)用程序序可能有一一個(gè)或多個(gè)個(gè)activity來給用戶選選擇歌曲并并進(jìn)行播放放。然而,,音樂播放放這個(gè)任務(wù)務(wù)本身不應(yīng)應(yīng)該為任何何activity所處理,因因?yàn)橛脩羝谄谕谒麄儌冸x開播放放器應(yīng)用程程序而開始始做別的事事情時(shí),音音樂仍在繼繼續(xù)播放。。為達(dá)到這這個(gè)目的,,媒體播放放器activity應(yīng)該啟用一一個(gè)運(yùn)行于于后臺(tái)的服服務(wù)。而系系統(tǒng)將在這這個(gè)activity不再顯示于于屏幕之后后,仍維持持音樂播放放服務(wù)的運(yùn)運(yùn)行。你可以連接接至(綁定定)一個(gè)正正在運(yùn)行的的服務(wù)(如如果服務(wù)沒沒有運(yùn)行,,則啟動(dòng)之之)。連接接之后,你你可以通過過那個(gè)服務(wù)務(wù)暴露出來來的接口與與服務(wù)進(jìn)行行通訊。對(duì)對(duì)于音樂服服務(wù)來說,,這個(gè)接口口可以允許許用戶暫停停、回退、、停止以及及重新開始始播放。如同activity和其它組件件一樣,服服務(wù)運(yùn)行于于應(yīng)用程序序進(jìn)程的主主線程內(nèi)。。所以它不不會(huì)對(duì)其它它組件或用用戶界面有有任何干擾擾,它們一一般會(huì)派生生一個(gè)新線線程來進(jìn)行行一些耗時(shí)時(shí)任務(wù)(比比如音樂回回放)。Service服務(wù)和接收收器廣播接收器器是一個(gè)專專注于接收收廣播通知知信息,并并做出對(duì)應(yīng)應(yīng)處理的組組件。很多多廣播是源源自于系統(tǒng)統(tǒng)代碼的───比如,,通知時(shí)區(qū)區(qū)改變、電電池電量低低、拍攝了了一張照片片或者用戶戶改變了語語言選項(xiàng)。。應(yīng)用程序序也可以進(jìn)進(jìn)行廣播───比如說說,通知其其它應(yīng)用程程序一些數(shù)數(shù)據(jù)下載完完成并處于于可用狀態(tài)態(tài)。應(yīng)用程序可可以擁有任任意數(shù)量的的廣播接收收器以對(duì)所所有它感興興趣的通知知信息予以以響應(yīng)。所所有的接收收器均繼承承自BroadcastReceiver基類。廣廣播接收器器沒有用戶戶界面。然然而,它們們可以啟動(dòng)動(dòng)一個(gè)activity來響應(yīng)它們們收到的信信息,或者者用NotificationManager來通知用戶戶。通知可可以用很多多種方式來來吸引用戶戶的注意力力──閃動(dòng)動(dòng)背燈、震震動(dòng)、播放放聲音等等等。一般來來說是在狀狀態(tài)欄上放放一個(gè)持久久的圖標(biāo),,用戶可以以打開它并并獲取消息息。BroadcastReceiver接收器內(nèi)容提供者將將一些特定的的應(yīng)用程序數(shù)數(shù)據(jù)供給其它它應(yīng)用程序使使用。數(shù)據(jù)可可以存儲(chǔ)于文文件系統(tǒng)、SQLite數(shù)據(jù)庫或其它它方式。內(nèi)容容提供者繼承承于ContentProvider基類,為其它它應(yīng)用程序取取用和存儲(chǔ)它它管理的數(shù)據(jù)據(jù)實(shí)現(xiàn)了一套套標(biāo)準(zhǔn)方法。。然而,應(yīng)用用程序并不直直接調(diào)用這些些方法,而是是使用一個(gè)ContentResolver對(duì)象,調(diào)用它它的方法作為為替代。ContentResolver可以與任意內(nèi)內(nèi)容提供者進(jìn)進(jìn)行會(huì)話,與與其合作來對(duì)對(duì)所有相關(guān)交交互通訊進(jìn)行行管理。參閱獨(dú)立的內(nèi)內(nèi)容提供者章章節(jié)獲得更多多關(guān)于使用內(nèi)內(nèi)容提供者的的內(nèi)容。每當(dāng)出現(xiàn)一個(gè)個(gè)需要被特定定組件處理的的請(qǐng)求時(shí),Android會(huì)確保那個(gè)組組件的應(yīng)用程程序進(jìn)程處于于運(yùn)行狀態(tài),,或在必要的的時(shí)候啟動(dòng)它它。并確保那那個(gè)相應(yīng)組件件的實(shí)例的存存在,必要時(shí)時(shí)會(huì)創(chuàng)建那個(gè)個(gè)實(shí)例。ContentProvider當(dāng)接收到ContentResolver發(fā)出的請(qǐng)求后后,內(nèi)容提供供者被激活。。而其它三種種組件──activity、服務(wù)和廣播播接收器被一一種叫做intent的異步消息所所激活。intent是一個(gè)保存著著消息內(nèi)容的的Intent對(duì)象。對(duì)于activity和服務(wù)來說,,它指明了請(qǐng)請(qǐng)求的操作名名稱以及作為為操作對(duì)象的的數(shù)據(jù)的URI和其它一些信信息。比如說說,它可以承承載對(duì)一個(gè)activity的請(qǐng)求,讓它它為用戶顯示示一張圖片,,或者讓用戶戶編輯一些文文本。而對(duì)于于廣播接收器器而言,Intent對(duì)象指明了聲聲明的行為。。比如,它可可以對(duì)所有感感興趣的對(duì)象象聲明照相按按鈕被按下。。對(duì)于每種組件件來說,激活活的方法是不不同的:通過傳遞一個(gè)個(gè)Intent對(duì)象至Context.startActivity()或Activity.startActivityForResult()以載載入入((或或指指定定新新工工作作給給))一一個(gè)個(gè)activity。相相應(yīng)應(yīng)的的activity可以以通通過過調(diào)調(diào)

組件件的的連連接接者者--Intent通過傳傳遞一一個(gè)Intent對(duì)象至至Context.startService()將啟動(dòng)動(dòng)一個(gè)個(gè)服務(wù)務(wù)(或或給予予正在在運(yùn)行行的服服務(wù)以以一個(gè)個(gè)新的的指令令)。。Android調(diào)用服服務(wù)的的onStart()方法并并將Intent對(duì)象傳傳遞給給它。。與與此類類似,,一個(gè)個(gè)Intent可以被被調(diào)用用組件件傳遞遞給Context.bindService()以獲取取一個(gè)個(gè)正在在運(yùn)行行的目目標(biāo)服服務(wù)的的連接接。這這個(gè)服服務(wù)會(huì)會(huì)經(jīng)由由onBind()方法的的調(diào)用用獲取取這個(gè)個(gè)Intent對(duì)象((如果果服務(wù)務(wù)尚未未啟動(dòng)動(dòng),bindService()會(huì)先啟啟動(dòng)它它)。。比如如說,,一個(gè)個(gè)activity可以連連接至至前述述的音音樂回回放服服務(wù),,并提提供給給用戶戶一個(gè)個(gè)可操操作的的(用用戶界界面))以對(duì)對(duì)回放放進(jìn)行行控制制。這這個(gè)activity可以調(diào)調(diào)用bindService()來建立立連接接,然然后調(diào)調(diào)用服服務(wù)中中定義義的對(duì)對(duì)象來來影響響回放放。應(yīng)用程程序可可以Manifest文件當(dāng)Android啟動(dòng)一一個(gè)應(yīng)應(yīng)用程程序組組件之之前,,它必必須知知道那那個(gè)組組件是是存在在的。。所以以,應(yīng)應(yīng)用程程序會(huì)會(huì)在一一個(gè)manifest文件中中聲明明它的的組件件,這這個(gè)文文件會(huì)會(huì)被打打包到到Android包中。。這個(gè)個(gè).apk文件還還將涵涵括應(yīng)應(yīng)用程程序的的代碼碼、文文件以以及其其它資資源。。這個(gè)manifest文件以以XML作為結(jié)結(jié)構(gòu)格格式,,而且且對(duì)于于所有有應(yīng)用用程序序,都都叫做做AndroidManifest.xml。為聲聲明一一個(gè)應(yīng)應(yīng)用程程序組組件,,它還還會(huì)做做很多多額外外工作作,比比如指指明應(yīng)應(yīng)用程程序所所需鏈鏈接到到的庫庫的名名稱((除了了默認(rèn)認(rèn)的Android庫之外外)以以及聲聲明應(yīng)應(yīng)用程程序期期望獲獲得的的各種種權(quán)限限。但manifest文件件的主主要功功能仍仍然是是向Android聲明明應(yīng)用用程序序的組組件。。舉例例說明明,一一個(gè)activity可可以如如下聲聲明::<activity>元素的的name屬性性指定定了實(shí)實(shí)現(xiàn)了了這個(gè)個(gè)activity的Activity的子類類。icon和和label屬屬性指指向了了包含含展示示給用用戶的的此activity的的圖標(biāo)標(biāo)和標(biāo)標(biāo)簽的的資源源文件件。其它組組件也也以類類似的的方法法聲明明───<service>元素用用于聲聲明服服務(wù),,<receiver>元素用用于聲聲明廣廣播接接收器器,而而<provider>元素用用于聲聲明內(nèi)內(nèi)容提提供者者。manifest文件中中未進(jìn)進(jìn)行聲聲明的的activity、服務(wù)務(wù)以及及內(nèi)容容提供供者將將不為為系統(tǒng)統(tǒng)所見見,從從而也也就不不會(huì)被被運(yùn)行行。然然而,,廣播播接收收器既既可以以在manifest文件中中聲明明,也也可以以在代代碼中中進(jìn)行行動(dòng)態(tài)態(tài)的創(chuàng)創(chuàng)建,,并以以調(diào)用用Context.registerReceiver()的方式式注冊(cè)冊(cè)至系系統(tǒng)。。如前所所述,,一個(gè)個(gè)activity可以啟啟動(dòng)另另外一一個(gè),,甚至至包括括與它它不處處于同同一應(yīng)應(yīng)用程程序之之中的的。舉舉個(gè)例例子說說,假假設(shè)你你想讓讓用戶戶看到到某個(gè)個(gè)地方方的街街道地地圖。。而已已經(jīng)存存在一一個(gè)具具有此此功能能的activity了,那那么你你的activity所需要要做的的工作作就是是把請(qǐng)請(qǐng)求信信息放放到一一個(gè)Intent對(duì)象里里面,,并把把它傳傳遞給給startActivity()。于是是地圖圖瀏覽覽器就就會(huì)顯顯示那那個(gè)地地圖。。而當(dāng)當(dāng)用戶戶按下下BACK鍵的時(shí)時(shí)候,,你的的activity又會(huì)再再一次次的顯顯示在在屏幕幕上。。對(duì)于用用戶來來說,,這看看起來來就像像是地地圖瀏瀏覽器器是你你activity所在的的應(yīng)用用程序序中的的一個(gè)個(gè)組成成部分分,其其實(shí)它它是在在另外外一個(gè)個(gè)應(yīng)用用程序序中定定義,,并運(yùn)運(yùn)行在在那個(gè)個(gè)應(yīng)用用程序序的進(jìn)進(jìn)程之之中的的。Android將這這兩兩個(gè)個(gè)activity放在在同同一一個(gè)個(gè)任任務(wù)務(wù)中中來來維維持持一一個(gè)個(gè)完完整整的的用用戶戶體體驗(yàn)驗(yàn)。。簡(jiǎn)簡(jiǎn)單單的的說說,,任任務(wù)務(wù)就就是是用用戶戶所所體體驗(yàn)驗(yàn)到到的的““應(yīng)應(yīng)用用程程序序””。。它它是是安安排排在在一一個(gè)個(gè)堆堆棧棧中中的的一一組組相相關(guān)關(guān)的的activity。堆堆棧棧中中的的根根activity就是是啟啟動(dòng)動(dòng)了了這這整整個(gè)個(gè)任任務(wù)務(wù)的的那那個(gè)個(gè)────一一般般情情況況下下,,它它就就是是用用戶戶在在應(yīng)應(yīng)用用程程序序加加載載器器中中所所選選擇擇的的。。而而堆堆棧棧最最上上方方的的activity則是是當(dāng)當(dāng)前前運(yùn)運(yùn)行行的的────用用戶戶直直接接對(duì)對(duì)其其進(jìn)進(jìn)行行操操作作的的。。當(dāng)當(dāng)一一個(gè)個(gè)activity啟動(dòng)動(dòng)另另外外一一個(gè)個(gè)的的時(shí)時(shí)候候,,新新的的activity就被被壓壓入入堆堆棧棧,,并并成成為為當(dāng)當(dāng)前前運(yùn)運(yùn)行行的的activity。而而前前一一個(gè)個(gè)activity仍保保持持在在堆堆棧棧之之中中。。當(dāng)當(dāng)用用戶戶按按下下BACK鍵的的時(shí)時(shí)候候,,當(dāng)當(dāng)前前activity出棧棧,,而而前前一一個(gè)個(gè)恢恢復(fù)復(fù)為為當(dāng)當(dāng)前前運(yùn)運(yùn)行行的的activity。Activity和任務(wù)Activity生命周期期用戶界面面UserInterface在一個(gè)Android應(yīng)用中,,用戶界界面是由由View和ViewGroup對(duì)象構(gòu)建建的。View與ViewGroup都有很多多種類,,而它們們都是View類的子類類。ViewView對(duì)象是Android平臺(tái)中用用戶界面面體現(xiàn)的的基礎(chǔ)單單位。View類是它稱稱為“widgets(工具))”的子子類的基基礎(chǔ),它它們提供供了諸如如文本輸輸入框和和按鈕之之類的UI對(duì)象的完完整實(shí)現(xiàn)現(xiàn)。ViewGroup類同樣為為其被稱稱為“Layouts(布局))”的子子類奠定定了基礎(chǔ)礎(chǔ),它們們提供了了象流式式布局、、表格布布局以及及相對(duì)布布局之類類的布局局架構(gòu)。。View對(duì)象是一一個(gè)數(shù)據(jù)據(jù)體,它它的屬性性存儲(chǔ)了了用于屏屏幕上一一塊矩形形區(qū)域的的布局參參數(shù)及內(nèi)內(nèi)容。并并負(fù)責(zé)這這塊它所所轄的這這個(gè)矩形形區(qū)域之之中所有有測(cè)量、、布局、、焦點(diǎn)轉(zhuǎn)轉(zhuǎn)換、卷卷動(dòng)以及及按鍵/觸摸手勢(shì)勢(shì)的處理理。作為為一個(gè)用用戶界面面對(duì)象,,View同時(shí)也擔(dān)擔(dān)任著用用戶交互互關(guān)鍵點(diǎn)點(diǎn)以及交交互事件件接受者者的角色色。布局Layout定義并展現(xiàn)你你的視圖層次次的最常用的的方法是使用用XML布局文件。如如同HTML一樣,XML為布局提供了了一種可讀的的結(jié)構(gòu)。XML中的每個(gè)元素素都是View或ViewGroup對(duì)象(抑或它它們的子類))。View對(duì)象是樹的葉葉節(jié)點(diǎn),而ViewGroup對(duì)象是樹的分分支(參閱樓樓上的視圖層層次圖)。XML元素的名稱與與它體現(xiàn)的Java類相對(duì)應(yīng)。所所以一個(gè)<TextView>元素將在你的的UI中生成一個(gè)TextView,而<LinearLayout>則創(chuàng)建一個(gè)LinearLayout視圖組。當(dāng)你你載入一個(gè)布布局資源時(shí),,Android系統(tǒng)會(huì)根據(jù)你你布局中的元元素初始化這這些運(yùn)行時(shí)對(duì)對(duì)象。舉例來說,一一個(gè)包含文本本視圖和一個(gè)個(gè)按鈕的簡(jiǎn)單單垂直布局如如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello,IamaTextView"/><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello,IamaButton"/></LinearLayout>請(qǐng)注意:LinearLayout元素包含了TextView和Button對(duì)象。你可以以在其中另外外安置一個(gè)LinearLayout(或其它類型型的視圖組)),以延展這這個(gè)視圖層次次,構(gòu)建更復(fù)復(fù)雜的布局。。用戶界面事件件UIEvents當(dāng)你在用戶界界面中加入了了一些視圖和和工具之后,,你可能想要要知道如何讓讓它們與用戶戶交互,進(jìn)而而實(shí)現(xiàn)你的動(dòng)動(dòng)作。如欲獲獲得用戶界面面事件通知,,你需要做以以下兩件事情情之一:?定義一個(gè)事件件偵聽器并將將其注冊(cè)至視視圖。通常情情況下,這是是你偵聽事件件的主要方式式。View類包含了一大大堆命名類似似On<什么什么>Listener的接口,每個(gè)個(gè)都帶有一個(gè)個(gè)叫做On<什么什么>()的回調(diào)方法。。比如:View.OnClickListener(用以處理視視圖中的點(diǎn)擊擊),View.OnTouchListener(用以處理視視圖中的觸屏屏事件),以以及View.OnKeyListener(用以處理理視圖中的的設(shè)備按鍵鍵事件)。。所以,如如果你希望望你的視圖圖在它被””點(diǎn)擊”((比如選擇擇了一個(gè)按按鈕)的時(shí)時(shí)候獲得通通知,你就就要實(shí)現(xiàn)OnClickListener,定義它的的onClick()回調(diào)方法((在其中進(jìn)進(jìn)行相應(yīng)處處理),并并將它用setOnClickListener()方法注冊(cè)到到視圖上。。?為視圖覆寫寫一個(gè)現(xiàn)有有的回調(diào)方方法。這種種方法主要要用于你自自己實(shí)現(xiàn)了了一個(gè)View類,并想偵偵聽其上發(fā)發(fā)生的特定定事件。比比如說當(dāng)屏屏幕被觸摸摸(onTouchEvent()),當(dāng)軌跡跡球發(fā)生了了移動(dòng)(onTrackballEvent())或者是設(shè)設(shè)備上的按按鍵被按下下(onKeyDown())。這種方方式允許你你為自己定定制的視圖圖中發(fā)生的的每個(gè)事件件定義默認(rèn)認(rèn)的行為,,并決定是是否需要將將事件傳遞遞給其它的的子視圖。。再說一次次,這些是是View類相關(guān)的回回調(diào)方法,,所以你只只能在你構(gòu)構(gòu)建自定義義組件時(shí)定定義它們。。如何在視圖圖中處理用用戶交互請(qǐng)請(qǐng)參見處理理用戶界面面事件文檔檔。資源和資產(chǎn)產(chǎn)ResourcesandAssets資源是Android應(yīng)用程序不不可或缺的的部分??偪傮w而言,,資源是你你想包含和和引入到應(yīng)應(yīng)用程序里里面的一些些外部元素素,比如圖圖片、音頻頻、視頻、、文本字符符串、布局局、主題等等。每個(gè)Android應(yīng)用程序包包含一個(gè)資資源目錄((res/)和資產(chǎn)目目錄(assets/),資產(chǎn)不不經(jīng)常被使使用,因?yàn)闉樗鼈兊膽?yīng)應(yīng)用程序很很少。你僅僅在需要讀讀取原始字字節(jié)流時(shí)才才需要保存存數(shù)據(jù)為資資產(chǎn)。資源源和資產(chǎn)目目錄均駐留留在Android項(xiàng)目樹的頂頂端,和源源代碼目錄錄(src/)處在同一一級(jí)上。資源和資產(chǎn)產(chǎn)從表面上上看沒多大大區(qū)別,不不過總體上上,在存儲(chǔ)儲(chǔ)外部?jī)?nèi)容容時(shí)資源用用得更多。。真正的區(qū)區(qū)別在于任任何放置在在資源目錄錄里的內(nèi)容容可以通過過您的應(yīng)用用程序的R類訪問,這這是被Android編譯過的。。而任何存存放在資產(chǎn)產(chǎn)目錄里的的內(nèi)容會(huì)保保持它的原原始文件格格式,為了了讀取它,,你必須使使用AssetManager來以字節(jié)流流的方式讀讀取文件。。所以保持持文件和數(shù)數(shù)據(jù)在資源源中(res/)中會(huì)更方方便訪問。。目錄Directory資源類型ResourceTypesres/anim/ XML文件,它們們被編譯進(jìn)進(jìn)逐幀動(dòng)畫畫(framebyframeanimation)或補(bǔ)間動(dòng)動(dòng)畫(tweenedanimation)對(duì)象res/drawable/ .png、.9.png、.jpg文件,它們們被編譯進(jìn)進(jìn)以下的Drawable資源子類型型中:要獲得這種種類型的一一個(gè)資源,,可以使用用Resource.getDrawable(id)位圖文件9-patches(可變尺寸寸的位圖))為了獲取資資源類型,,使用mContext.getResources().getDrawable(R.drawable.imageId)注意:放在在這里的圖圖像資源可可能會(huì)被aapt工具自動(dòng)地地進(jìn)行無損損壓縮優(yōu)化化。比如,,一個(gè)真彩彩色但并不不需要256色的PNG可能會(huì)被轉(zhuǎn)轉(zhuǎn)換為一個(gè)個(gè)帶調(diào)色板板的8位PNG。這使得同同等質(zhì)量的的圖片占用用更少的資資源。所以以我們得意意識(shí)到這些些放在該目目錄下的二二進(jìn)制圖像像在生成時(shí)時(shí)可能會(huì)發(fā)發(fā)生變化。。如果你想想讀取一個(gè)個(gè)圖像位流流并轉(zhuǎn)換成成一個(gè)位圖圖(bitmap),請(qǐng)把圖像像文件放在在res/raw/目錄下,這這樣可以避避免被自動(dòng)動(dòng)優(yōu)化。res/layout/被編譯為屏屏幕布局((或屏幕的的一部分))的XML文件。參見見布局聲明明(DeclaringLayout)res/values/可以被編譯譯成很多種種類型的資資源的XML文件。注意:不像其他的的res/文件夾,它它可以保存存任意數(shù)量量的文件,,這些文件件保存了要要?jiǎng)?chuàng)建資源源的描述,,而不是資資源本身。。XML元素類型控控制這些資資源應(yīng)該放放在R類的什么地地方。盡管這個(gè)文文件夾里的的文件可以以任意命名名,不過下下面使一些些比較典型型的文件((文件命名名的慣例是是將元素類類型包含在在該名稱之之中):array.xml定義數(shù)據(jù)colors.xml定義colordrawable和顏色的字字符串值((colorstringvalues)。使用Resource.getDrawable()和Resources.getColor()分別獲得這這些資源。。dimens.xml定義尺寸值值(dimensionvalue)。使用Resources.getDimension()獲得這些資資源。strings.xml定義字符串串(string)值(使用用Resources.getString()或者Resources.getText()獲取這些資資源。getText()會(huì)保留在UI字符串上應(yīng)應(yīng)用的豐富富的文本樣樣式)。? styles.xml定義樣式((style)對(duì)象。res/xml/任意的XML文件,在運(yùn)運(yùn)行時(shí)可以以通過調(diào)用用Resources.getXML()讀取。res/raw/直接復(fù)制到到設(shè)備中的的任意文件件。它們無無需編譯,,添加到你你的應(yīng)用程程序編譯產(chǎn)產(chǎn)生的壓縮縮文件中。。要使用這這些資源,,可以調(diào)用用Resources.openRawResource(),參數(shù)是資資源的ID,即R.raw.somefilename。數(shù)據(jù)存儲(chǔ)與與訪問很多時(shí)候我我們的軟件件需要對(duì)處處理后的數(shù)數(shù)據(jù)進(jìn)行存存儲(chǔ)或再次次訪問。Android為數(shù)據(jù)存儲(chǔ)儲(chǔ)提供了多多種方式,,分別有如如下幾種::文件SharedPreferences(參數(shù))SQLite數(shù)據(jù)庫內(nèi)容提供者者(Contentprovider)網(wǎng)絡(luò)使用文件進(jìn)進(jìn)行數(shù)據(jù)存存儲(chǔ)首先給大家家介紹使用用文件如何何對(duì)數(shù)據(jù)進(jìn)進(jìn)行存儲(chǔ),,Activity提供了openFileOutput()方法可以用用于把數(shù)據(jù)據(jù)輸出到文文件中,具具體的實(shí)現(xiàn)現(xiàn)過程與在在J2SE環(huán)境中保保存數(shù)據(jù)據(jù)到文件件中是一一樣的。。publicclassFileActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){...FileOutputStreamoutStream=this.openFileOutput("itcast.txt",Context.MODE_PRIVATE);outStream.write(“ggggg".getBytes());outStream.close();}}openFileOutput()方法的第第一參數(shù)數(shù)用于指指定文件件名稱,,不能包包含路徑徑分隔符符“/”,如果文文件不存存在,Android會(huì)自動(dòng)創(chuàng)創(chuàng)建它。。創(chuàng)建的的文件保保存在/data/data/<packagename>/files目錄,如如:/data/data/cn.itcast.action/files/itcast.txt,通過點(diǎn)點(diǎn)擊Eclipse菜單“Window””-“ShowView””-“Other”,在對(duì)話話窗口中中展開android文件夾,,選擇下下面的FileExplorer視圖,然然后在FileExplorer視圖中展展開/data/data/<packagename>/files目錄就可可以看到到該文件件。openFileOutput()方法的第第二參數(shù)數(shù)用于指指定操作作模式,,有四種種模式,,分別為為:Context.MODE_PRIVATE=0Context.MODE_APPEND=32768Context.MODE_WORLD_READABLE=1Context.MODE_WORLD_WRITEABLE=2使用文件件進(jìn)行數(shù)數(shù)據(jù)存儲(chǔ)儲(chǔ)Context.MODE_PRIVATE:為默認(rèn)認(rèn)操作模模式,代代表該文文件是私私有數(shù)據(jù)據(jù),只能能被應(yīng)用用本身訪訪問,在在該模式式下,寫寫入的內(nèi)內(nèi)容會(huì)覆覆蓋原文文件的內(nèi)內(nèi)容,如如果想把把新寫入入的內(nèi)容容追加到到原文件件中。可可以使用用Context.MODE_APPENDContext.MODE_APPEND:模式會(huì)會(huì)檢查文文件是否否存在,,存在就就往文件件追加內(nèi)內(nèi)容,否否則就創(chuàng)創(chuàng)建新文文件。Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制制其他應(yīng)應(yīng)用是否否有權(quán)限限讀寫該該文件。。MODE_WORLD_READABLE:表示當(dāng)當(dāng)前文件件可以被被其他應(yīng)應(yīng)用讀取取;MODE_WORLD_WRITEABLE:表示當(dāng)當(dāng)前文件件可以被被其他應(yīng)應(yīng)用寫入入。如果希望望文件被被其他應(yīng)應(yīng)用讀和和寫,可可以傳入入:openFileOutput("itcast.txt",Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);android有一套自自己的安安全模型型,當(dāng)應(yīng)應(yīng)用程序序(.apk)在安裝時(shí)時(shí)系統(tǒng)就就會(huì)分配配給他一一個(gè)userid,當(dāng)該應(yīng)應(yīng)用要去去訪問其其他資源源比如文文件的時(shí)時(shí)候,就就需要userid匹配。默默認(rèn)情況況下,任任何應(yīng)用用創(chuàng)建的的文件,,sharedpreferences,數(shù)據(jù)庫庫都應(yīng)該該是私有有的(位位于/data/data/<packagename>/files),其其他程程序無無法訪訪問。。除非非在創(chuàng)創(chuàng)建時(shí)時(shí)指定定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有有這樣樣其他他程序序才能能正確確訪問問。使用SharedPreferences進(jìn)行數(shù)數(shù)據(jù)存存儲(chǔ)很多時(shí)時(shí)候我我們開開發(fā)的的軟件件需要要向用用戶提提供軟軟件參參數(shù)設(shè)設(shè)置功功能,,例如如我們們常用用的QQ,用戶戶可以以設(shè)置置是否否允許許陌生生人添添加自自己為為好友友。對(duì)對(duì)于軟軟件配配置參參數(shù)的的保存存,如如果是是window軟件通通常我我們會(huì)會(huì)采用用ini文件進(jìn)進(jìn)行保保存,,如果果是j2se應(yīng)用,,我們們會(huì)采采用properties屬性文文件或或者xml進(jìn)行保保存。。如果果是Android應(yīng)用,,我們們最適適合采采用什什么方方式保保存軟軟件配配置參參數(shù)呢呢?Android平臺(tái)給給我們們提供供了一一個(gè)SharedPreferences類,它它是一一個(gè)輕輕量級(jí)級(jí)的存存儲(chǔ)類類,特特別適適合用用于保保存軟軟件配配置參參數(shù)。。使用用SharedPreferences保存數(shù)數(shù)據(jù),,其背背后是是用xml文件存存放數(shù)數(shù)據(jù),,文件件存放放在/data/data/<packagename>/shared_prefs目錄下下:SharedPreferencessharedPreferences=getSharedPreferences("itcast",Context.MODE_PRIVATE);Editoreditor=sharedPreferences.edit();//獲取編編輯器器editor.putString("name","傳智播播客");editor.putInt("age",4);mit();//提交修修改生成的的itcast.xml文件內(nèi)內(nèi)容如如下::<?xmlversion='1.0'encoding='utf-8'standalone='yes'?><map><stringname="name">傳智播播客</string><intname="age"value="4"/></map>因?yàn)镾haredPreferences背后是是使用用xml文件保保存數(shù)數(shù)據(jù),,getSharedPreferences(name,mode)方法的的第一一個(gè)參參數(shù)用用于指指定該該文件件的名名稱,,名稱稱不用用帶后后綴,,后綴綴會(huì)由由Android自動(dòng)加加上。。方法法的第第二個(gè)個(gè)參數(shù)數(shù)指定定文件件的操操作模模式,,共有有四種種操作作模式式,這這四種種模式式前面面介紹紹使用用文件件方式式保存存數(shù)據(jù)據(jù)時(shí)已已經(jīng)講講解過過。如如果希希望SharedPreferences背后使使用的的xml文件能能被其其他應(yīng)應(yīng)用讀讀和寫寫,可可以指指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權(quán)限。。另外Activity還提供供了另另一個(gè)個(gè)getPreferences(mode)方法操操作SharedPreferences,這個(gè)個(gè)方法法默認(rèn)認(rèn)使用用當(dāng)前前類不不帶包包名的的類名名作為為文件件的名名稱。。訪問SharedPreferences中的數(shù)數(shù)據(jù)訪問SharedPreferences中的數(shù)據(jù)代代碼如下::SharedPreferencessharedPreferences=getSharedPreferences("itcast",Context.MODE_PRIVATE);//getString()第二個(gè)參數(shù)數(shù)為缺省值值,如果preference中不存在該該key,將返回缺缺省值Stringname=sharedPreferences.getString("name","");intage=sharedPreferences.getInt("age",1);如果訪問其其他應(yīng)用中中的Preference,前提條件件是:該preference創(chuàng)建時(shí)指定定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE權(quán)限。如::有個(gè)<packagename>為cn.itcast.action的應(yīng)用使用用下面語句句創(chuàng)建了preference。getSharedPreferences("itcast",Context.MODE_WORLD_READABLE);其他應(yīng)用要要訪問上面面應(yīng)用的preference,首先需要?jiǎng)?chuàng)創(chuàng)建上面應(yīng)應(yīng)用的Context,然后通過過Context訪問preference,訪問preference時(shí)會(huì)在應(yīng)用用所在包下下的shared_prefs目錄找到preference:ContextotherAppsContext=createPackageContext("cn.itcast.action",Context.CONTEXT_IGNORE_SECURITY);SharedPreferencessharedPreferences=otherAppsContext.getSharedPreferences("itcast",Context.MODE_WORLD_READABLE);Stringname=sharedPreferences.getString("name","");intage=sharedPreferences.getInt("age",0);如果不通過過創(chuàng)建Context訪問其他應(yīng)應(yīng)用的preference,也可以以以讀取xml文件方式直直接訪問其其他應(yīng)用preference對(duì)應(yīng)的xml文件,如::FilexmlFile=newFile(““/data/data/<packagename>/shared_prefs/itcast.xml”);//<packagename>應(yīng)替換成應(yīng)應(yīng)用的包名名使用嵌入式式關(guān)系型SQLite數(shù)據(jù)庫存儲(chǔ)儲(chǔ)數(shù)據(jù)除了可以使使用文件或或SharedPreferences存儲(chǔ)數(shù)據(jù),,還可以選選擇使用SQLite數(shù)據(jù)庫存儲(chǔ)儲(chǔ)數(shù)據(jù)。在Android平臺(tái)上,集集成了一個(gè)個(gè)嵌入式關(guān)關(guān)系型數(shù)據(jù)據(jù)庫—SQLite,SQLite3支持NULL、INTEGER、REAL(浮點(diǎn)數(shù)字字)、TEXT(字符串文本本)和BLOB(二進(jìn)制對(duì)象象)數(shù)據(jù)類型,,雖然它支支持的類型型只有五種種,但實(shí)際際上sqlite3也接受varchar(n)、char(n)、decimal(p,s)等數(shù)據(jù)類型型,只不過過在運(yùn)算或或保存時(shí)會(huì)會(huì)轉(zhuǎn)成對(duì)應(yīng)應(yīng)的五種數(shù)數(shù)據(jù)類型。。SQLite最大的特點(diǎn)點(diǎn)是你可以以把各種類類型的數(shù)據(jù)據(jù)保存到任任何字段中中,而不用用關(guān)心字段段聲明的數(shù)數(shù)據(jù)類型是是什么。例例如:可以以在Integer類型的字段段中存放字字符串,或或者在布爾爾型字段中中存放浮點(diǎn)點(diǎn)數(shù),或者者在字符型型字段中存存放日期型型值。但但有一種情情況例外::定義為INTEGERPRIMARYKEY的字段只能能存儲(chǔ)64位整數(shù),當(dāng)當(dāng)向這種種字段保存存除整數(shù)以以外的數(shù)據(jù)據(jù)時(shí),將會(huì)會(huì)產(chǎn)生錯(cuò)誤誤。另外外,SQLite在解析CREATETABLE語句時(shí),會(huì)會(huì)忽略CREATETABLE語句中跟在在字段名后后面的數(shù)據(jù)據(jù)類型信息息,如下面面語句會(huì)忽忽略name字段的類型型信息:CREATETABLEperson(personidintegerprimarykeyautoincrement,namevarchar(20))SQLite可以解析大大部分標(biāo)準(zhǔn)準(zhǔn)SQL語句,如::查詢語句::select*from表名where條件子句groupby分組字句having...orderby排序子句如:select*frompersonselect*frompersonorderbyiddescselectnamefrompersongroupbynamehavingcount()>1分頁SQL與mysql類似,下面面SQL語句獲取5條記錄,跳跳過前面*3條記錄select*fromAccountlimit5offse

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論