首頁(yè) 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場(chǎng)

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測(cè) / 活動(dòng)區(qū)

交流區(qū) | 測(cè)硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門(mén) / 進(jìn)階 / 社區(qū)互助

新手 | 你問(wèn)我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 21171|回復(fù): 1
上一主題 下一主題
[教程]

Android程序設(shè)計(jì)(29)-Android應(yīng)用程序的剖析

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:30 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式 | 未知
>  Android應(yīng)用程序基本上是由下面四個(gè)區(qū)塊組合而成:   
   
  1.Activity   
   
  2.Broadcast Intent Receiver   
   
  3.Service   
   
  4.Content Provider   
   
  并非所有的應(yīng)用程序都需要有這四種區(qū)塊來(lái)組成,依開(kāi)發(fā)人員的應(yīng)用程序可能用到其中幾個(gè)區(qū)塊來(lái)組合。   
   
  一旦開(kāi)發(fā)人員決定在應(yīng)用程序中使用那些區(qū)塊來(lái)組成,開(kāi)發(fā)人員應(yīng)該在AndroidManifest.xml文件中列出來(lái)。這是一個(gè)XML文件,開(kāi)發(fā)人員可以在其中聲明應(yīng)用程序用到的區(qū)塊組件以及此區(qū)塊提供的功能和必要的條件。在Android Manifest File Document有完整的細(xì)節(jié)描述。(請(qǐng)參考下述網(wǎng)址:http://code.google.com/android/devel/bblocks-manifest.html )   
   
  而下述XML內(nèi)容就是一個(gè)簡(jiǎn)單的AndroidManifest.xml范例。如圖80所示。在這個(gè)范例中只有放一個(gè)Activity元件,就是在<activity>XML元素中。   
   
  首先,我們先來(lái)看第一個(gè)區(qū)塊Activity   
   
  Activity   
   
  Activities是Android四個(gè)區(qū)塊中最常用的一種。在應(yīng)用程序中,一個(gè)Activity通常就是一個(gè)單獨(dú)的畫(huà)面。每一個(gè)Activity通過(guò)一個(gè)繼承了Activity基本類(lèi)別來(lái)實(shí)現(xiàn)。這個(gè)類(lèi)別將會(huì)顯示一個(gè)或有多個(gè)View物件的界面。并且回應(yīng)一些事件功能。   
   
  大部份的應(yīng)用程序都會(huì)由多個(gè)畫(huà)面來(lái)組成。例如:一個(gè)文字訊息傳送程序會(huì)有一個(gè)畫(huà)面是用來(lái)顯示要發(fā)送訊息的聯(lián)絡(luò)人清單,另一個(gè)畫(huà)面用來(lái)輸入要傳送的訊息內(nèi)容,最後一個(gè)畫(huà)面用來(lái)查閱舊的訊息內(nèi)容或是改變程序的設(shè)定畫(huà)面。   
   
  每一個(gè)畫(huà)面都會(huì)實(shí)作在一個(gè)Activity里。切換到另一個(gè)畫(huà)面就是去啟動(dòng)另一個(gè)Activity起來(lái)。在某些情況下,Activity可以回傳一個(gè)數(shù)值給之前的一個(gè)Activity,例如:一個(gè)Activity讓使用者選取一張照片,然後告知上一個(gè)Activity使用者選取了那張照片。   
   
  當(dāng)一個(gè)新的畫(huà)面打開(kāi)時(shí),之前的畫(huà)面會(huì)暫停并且系統(tǒng)會(huì)將它放進(jìn)歷史堆疊中。使用者可以向後導(dǎo)航到之前打開(kāi)的歷史畫(huà)面。畫(huà)面也可以在不適合繼續(xù)保存時(shí),從歷史堆疊中移除。Android為每一個(gè)以主畫(huà)面(Home)打開(kāi)的應(yīng)用程序保持其歷史堆疊。   
   
  Intent and Intent Filters:   
   
  Android使用一個(gè)特殊的類(lèi)別叫做Intent,來(lái)在畫(huà)面之間做移動(dòng)的動(dòng)作,Intent是用來(lái)描述一個(gè)應(yīng)用程序想要做什麼事情。在Intent資料結(jié)構(gòu)中兩個(gè)最重要的部份,一個(gè)是動(dòng)作及對(duì)資料產(chǎn)生什麼樣的反應(yīng)。   
   
  動(dòng)作主要的內(nèi)容有MAIN(程序的進(jìn)入點(diǎn)),View,Pick,Edit等動(dòng)作。而資料則是用URI的形式來(lái)表示。   
   
  例如:想要查看一個(gè)聯(lián)絡(luò)人的訊息,開(kāi)發(fā)人員需要建立一個(gè)Intent,包含了View的動(dòng)作及指向該聯(lián)絡(luò)人資料的URI描述句。   
   
  另一個(gè)相關(guān)的類(lèi)別是Intent Filter。當(dāng)Intent要求去做某些事情時(shí),Intent Filter被用來(lái)描述這個(gè)activity能夠做些什麼事情。例如:一個(gè)activity要能夠顯示聯(lián)絡(luò)人資料,就必需要在Intent Filter說(shuō)明要如何處理聯(lián)絡(luò)人資料并且用ACTION_VIEW來(lái)呈現(xiàn)出來(lái)。Intent Filter都會(huì)宣告在AndroidManifest.xml檔案中。   
   
  而畫(huà)面的切換則是由resolving intent來(lái)實(shí)現(xiàn)。當(dāng)使用者想要產(chǎn)生新的畫(huà)面時(shí),現(xiàn)行的activity就使用startActivity(myIntent)方法。然後系統(tǒng)會(huì)根據(jù)所有已安裝的應(yīng)用程序所定義的intent filter來(lái)看那個(gè)應(yīng)用程序是最適合myIntent。當(dāng)startActivity方法被呼叫時(shí),resolving Intents的處理過(guò)程是伴隨而來(lái)的。   
   
  而resolving Intent提供開(kāi)發(fā)人員有兩個(gè)好處:   
   
  A.讓Activities可以很容易的利用Intent的機(jī)制去使用其他應(yīng)用程序的功能。   
   
  B.讓Activities可以很容易的在任何情況下,由新的Activity來(lái)取代。   
   
  接下來(lái)是Broadcast Intent Receiver   
   
  Broadcast Intent Receiver:   
   
  當(dāng)開(kāi)發(fā)人員希望應(yīng)用程序來(lái)對(duì)外部的事件做一些處理時(shí),可以使用Broadcast Intent Receiver。例如:當(dāng)電話(huà)響時(shí),或是網(wǎng)路資料可以使用時(shí),或是時(shí)間到了午夜時(shí)。Broadcast Intent Receiver并不能拿來(lái)顯示出使用者介面,它必需利用Notification Manager來(lái)通知使用者所設(shè)定的事件已經(jīng)觸發(fā)。   
   
  Broadcast Intent Receiver同樣可以在AndrodiManifest.xml檔案中宣告,也可以在撰寫(xiě)程序碼,利用 Context.registerReceiver()方法來(lái)宣告Broadcast Intent Receiver。   
   
  應(yīng)用程序并不會(huì)因?yàn)锽roadcast Receivers被呼叫而被它執(zhí)行起來(lái)。而且當(dāng)Broadcast Receivers被觸發(fā)時(shí),系統(tǒng)會(huì)依宣告的需求來(lái)執(zhí)行相對(duì)應(yīng)的應(yīng)用程序。應(yīng)用程序可以利用 Context.sendBroadcast()方法來(lái)發(fā)出他們自己的intent broadcast給其他的應(yīng)程序。   
   
  接下來(lái)是Service   
   
  Service:   
   
  Service是沒(méi)有使用者介面,而且是可以長(zhǎng)時(shí)間運(yùn)作的程序碼。例如:像多媒體播放器,再播放列表中的歌曲。對(duì)於一個(gè)多媒體播放器的應(yīng)用程序,可能會(huì)有一個(gè)或多個(gè)Activities在運(yùn)行,使用者選擇歌曲并播放,然而,并不會(huì)有一個(gè)Activity來(lái)處理播放音樂(lè),因?yàn)槭褂谜呖赡荛_(kāi)啟不同的應(yīng)用程序時(shí),音樂(lè)還是要繼續(xù)播放。   
   
  此時(shí),多媒體播放器的Activity就會(huì)使用 Content.startService()方法來(lái)讓音樂(lè)持續(xù)播放。系統(tǒng)會(huì)一直播放音樂(lè),直到音樂(lè)結(jié)束。   
   
  當(dāng)應(yīng)用程序進(jìn)入背景狀態(tài)時(shí),開(kāi)發(fā)人員可以利用 Content.bindService()方法來(lái)跟Service進(jìn)行連結(jié)的動(dòng)作。當(dāng)連接到一個(gè)Service時(shí),開(kāi)發(fā)人員就可以透過(guò)該Service開(kāi)放出來(lái)的介面跟應(yīng)用程序進(jìn)行溝通。以剛才播放音樂(lè)的Service來(lái)看,Service可能允許使用者進(jìn)行音樂(lè)的暫停、倒轉(zhuǎn)、快轉(zhuǎn)等動(dòng)作。   
   
  最後我們介紹Content Provider   
   
  Content Provider:   
   
  應(yīng)用程序可以將應(yīng)用程序的資料儲(chǔ)存到檔案、SQLite資料庫(kù)或其他的機(jī)制儲(chǔ)存起來(lái)。當(dāng)開(kāi)發(fā)人員希望應(yīng)用程序的資料可以被其他應(yīng)用程序共享時(shí),Content Provider就會(huì)非常有用。Content Provider實(shí)現(xiàn)了讓?xiě)?yīng)用程序之間互相分享資料的機(jī)制。在Accessing Content Providers有完整的細(xì)節(jié)描述。(請(qǐng)參考下述網(wǎng)址:http://code.google.com/android/devel/data/contentproviders.html )。   

上一篇:Android程序設(shè)計(jì)(12)-如何在Eclipse上開(kāi)發(fā)Android應(yīng)用程序(2)
下一篇:Android程序設(shè)計(jì)(26)-如何進(jìn)行專(zhuān)案除錯(cuò),以「Hello,Android!」
沙發(fā)
發(fā)表于 2016-3-10 19:52 | 只看該作者 | 來(lái)自山東
很給力,ZNDS有你更精彩!

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書(shū) | 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-12-28 03:44 , Processed in 0.057333 second(s), 15 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表