一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Android文檔閱讀02—解析Android程序

 昵稱4818519 2011-04-07
Android文檔閱讀02—解析Android程序
2010-08-06 01:05

在Android應(yīng)用程序中有四個(gè)構(gòu)建塊:

  • Activity
  • Intent Receiver
  • Service
  • Content Provider

并不是每個(gè)程序都需要所有的四個(gè)部分,你的程序可能用到它們其中一些的組合。

一旦你決定在你的程序中需要哪個(gè)組件,你應(yīng)該在一個(gè)叫AndroidManifest.xml的文件中列出它們。你在這個(gè)XML文件中聲明程序中用到的組件和它們的用途和需要。在Android manifest file 文檔中查閱完整的細(xì)節(jié)。

 

Activity

Activity是Android構(gòu)造塊中最基本的一種,在應(yīng)用中,一個(gè)activity通常就是一個(gè)單獨(dú)的屏幕。每一個(gè)activity都被實(shí)現(xiàn)為一個(gè)獨(dú)立的類,并且繼承于Activity這個(gè)基類。這個(gè)activity類將會(huì)顯示由幾個(gè)Views控件組成的用戶接口,并對(duì)事件做出響應(yīng)。大部份的應(yīng)用都會(huì)包含多個(gè)的屏幕。例如,一個(gè)短消息應(yīng)用程序?qū)?huì)有一個(gè)屏幕用于顯示聯(lián)系人列表,第二個(gè)屏幕用于寫短消息,同時(shí)還會(huì)有用于瀏覽舊短消息及進(jìn)行系統(tǒng)設(shè)置的屏幕。每一個(gè)這樣的屏幕,就是一個(gè)activity。從一個(gè)屏幕導(dǎo)航到另一個(gè)屏幕是很簡(jiǎn)單的。在一些應(yīng)用中,一個(gè)屏幕甚至?xí)祷刂到o前一個(gè)屏幕。

 

當(dāng)一個(gè)新的屏幕打開后,前一個(gè)屏幕將會(huì)暫停,并保存在歷史堆棧中。用戶可以返回到歷史堆棧中的前一個(gè)屏幕。當(dāng)屏幕不再使用時(shí),還可以從歷史堆棧中刪除。默認(rèn)情況下,Android將會(huì)保留從主屏幕到每一個(gè)應(yīng)用的運(yùn)行屏幕。

Intent and Intent Filters

 

Android使用了Intent這個(gè)特殊類,實(shí)現(xiàn)在屏幕與屏幕之間移動(dòng)。Intent類用于描述一個(gè)應(yīng)用想要做什么事。在Intent的描述結(jié)構(gòu)中,有兩個(gè)最重要的部分:動(dòng)作和動(dòng)作對(duì)應(yīng)的數(shù)據(jù)。

典型的動(dòng)作類型有:MAIN(activity的門戶)、VIEW、PICK、EDIT等。而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)則以URI的形式進(jìn)行表示。例如:要查看一個(gè)人的聯(lián)系方式,你需要?jiǎng)?chuàng)建一個(gè)動(dòng)作類型為VIEW的intent,以及一個(gè)表示這個(gè)人的URI。

Android利用一個(gè)叫Intent的特殊類來實(shí)現(xiàn)屏幕間的切換。一個(gè)Intent描述了一個(gè)應(yīng)用程序想要做什么。intent數(shù)據(jù)結(jié)構(gòu)中兩個(gè)最重要的部分是動(dòng)作和動(dòng)作對(duì)應(yīng)的數(shù)據(jù)。一個(gè)典型動(dòng)作的值是MAIN(活動(dòng)的入口),VIEW,PICK,EDIT,和其它一些。數(shù)據(jù)表示為URI。例如,瀏覽一個(gè)人的聯(lián)系信息,你應(yīng)該創(chuàng)建一個(gè)帶有VIEW活動(dòng)的intent,并且URI的數(shù)據(jù)集指向那個(gè)人。

 

與之有關(guān)系的一個(gè)類叫IntentFilter。相對(duì)于intent是一個(gè)有效的做某事的請(qǐng)求,一個(gè)intent filter則用于描述一個(gè)activity(或者Intent Receiver)能夠操作哪些intent。一個(gè)activity如果要顯示一個(gè)人的聯(lián)系方式時(shí),需要聲明一個(gè)IntentFilter,這個(gè)IntentFilter要知道怎么去處理VIEW動(dòng)作和表示一個(gè)人的URI。IntentFilter需要在AndroidManifest.xml中定義。

 

一個(gè)屏幕到另一個(gè)屏幕之間的導(dǎo)航是通過解析意圖(Intent)來實(shí)現(xiàn)的。當(dāng)向前導(dǎo)航時(shí),activity將會(huì)調(diào)用startActivity (Intent myIntent)方法。然后,系統(tǒng)會(huì)在所有安裝的應(yīng)用程序中定義的IntentFilter中查找,找到最匹配myIntent的 Intent對(duì)應(yīng)的activity。新的activity接收到myIntent的通知后,開始運(yùn)行。當(dāng)startActivity方法被調(diào)用將觸發(fā)解析 myIntent的動(dòng)作,這個(gè)機(jī)制提供了兩個(gè)關(guān)鍵好處:

  • Activity能夠簡(jiǎn)單的通過在Intent表中發(fā)送請(qǐng)求,從其他組件中復(fù)用功能
  • Activity能夠在任何時(shí)候由一個(gè)帶有相同IntentFilter的Activity替換

Intent Receiver

當(dāng)你希望你的應(yīng)用能夠?qū)σ粋€(gè)外部的事件(如當(dāng)電話呼入時(shí),或者數(shù)據(jù)網(wǎng)絡(luò)可用時(shí),或者到了晚上時(shí))做出響應(yīng),你可以使用一個(gè)Intent Receiver。雖然Intent Receiver在感興趣的事件發(fā)生時(shí),會(huì)使用NotificationManager 通知用戶,但它并不能生成一個(gè)UI。Intent Receiver在AndroidManifest.xml中注冊(cè),但也可以在代碼中使用 Context.registerReceiver()進(jìn)行注冊(cè)。當(dāng)一個(gè)intent receiver被觸發(fā)時(shí),你的應(yīng)用不必對(duì)請(qǐng)求調(diào)用intent receiver,系統(tǒng)會(huì)在需要的時(shí)候啟動(dòng)你的應(yīng)用。各種應(yīng)用還可以通過使用Context.broadcastIntent()將它們自己的 intent receiver廣播給其它應(yīng)用程序。

Service

一個(gè)Service是一段長(zhǎng)生命周期的,沒有用戶界面的程序。比較好的一個(gè)例子就是一個(gè)正在從播放列表中播放歌曲的媒體播放器。在一個(gè)媒體播放器的應(yīng)用中,應(yīng)該會(huì)有多個(gè)activity,讓使用者可以選擇歌曲并播放歌曲。然而,音樂重放這個(gè)功能并沒有對(duì)應(yīng)的activity,因?yàn)槭褂谜弋?dāng)然會(huì)認(rèn)為在導(dǎo)航到其它屏幕時(shí)音樂應(yīng)該還在播放的。在這個(gè)例子中,媒體播放器這個(gè)activity會(huì)使用Context.startService()來啟動(dòng)一個(gè)service,從而可以在后臺(tái)保持音樂的播放。同時(shí),系統(tǒng)也將保持這個(gè)service一直執(zhí)行,直到這個(gè)service運(yùn)行結(jié)束。另外,我們還可以通過使用Context.bindService()方法,連接到一個(gè)service上(如果這個(gè)service還沒有運(yùn)行將啟動(dòng)它)。當(dāng)連接到一個(gè)service之后,我們還可以service提供的接口與它進(jìn)行通訊。拿媒體播放器這個(gè)例子來說,我們還可以進(jìn)行暫停、重播等操作。

Content Provider

應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件中、SQL數(shù)據(jù)庫(kù)中,甚至是任何有效的設(shè)備中。當(dāng)你想將你的應(yīng)用數(shù)據(jù)與其它的應(yīng)用共享時(shí),Content Provider將會(huì)很有用。一個(gè)Content Provider類實(shí)現(xiàn)了一組標(biāo)準(zhǔn)的方法,從而能夠讓其它的應(yīng)用保存或讀取此Content Provider處理的各種數(shù)據(jù)類型。

更詳細(xì)的Content Provider資料,可以參考附帶文檔中的

Accessing Content Providers。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产精品伦一区二区三区在线 | 91一区国产中文字幕| 欧美精品久久99九九| 亚洲中文字幕日韩在线| 国产视频福利一区二区| 国产内射一级一片内射高清视频| 人妻少妇系列中文字幕| 狠狠干狠狠操亚洲综合| 国产精品欧美一区两区| 日韩精品综合福利在线观看| 久久一区内射污污内射亚洲| 国产小青蛙全集免费看| 男女激情视频在线免费观看| 暴力性生活在线免费视频| 欧美亚洲美女资源国产| 五月激情五月天综合网| 91精品视频免费播放| 亚洲人妻av中文字幕| 国产丝袜极品黑色高跟鞋| 麻豆在线观看一区二区| 色婷婷国产精品视频一区二区保健| av在线免费观看一区二区三区| 人妻中文一区二区三区| 久热这里只有精品九九| 青青操精品视频在线观看| 日本熟女中文字幕一区| 夫妻性生活黄色录像视频| 国产成人精品一区二区三区| 精品一区二区三区人妻视频| 日韩黄色大片免费在线| 九九热在线视频精品免费| 不卡免费成人日韩精品| 最近最新中文字幕免费| 日韩欧美一区二区不卡视频| 欧美成人久久久免费播放| 中文字幕欧美视频二区| 亚洲人午夜精品射精日韩 | 日韩免费国产91在线| 久久综合亚洲精品蜜桃| 国产一级性生活录像片| 中文字幕一区二区熟女|