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

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

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

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

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

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

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

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

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

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

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

GMT+8, 2024-12-28 01:17 , Processed in 0.069273 second(s), 15 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

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