自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android系統(tǒng)應(yīng)用程序基本概念解讀

移動(dòng)開(kāi)發(fā) Android
Android系統(tǒng)應(yīng)用程序中包含有四種構(gòu)造塊,分別為Activity;Intent Receiver;Service以及Content Provider等。

經(jīng)常關(guān)注我們51CTO的朋友們應(yīng)該知道,在以前的文章中我們對(duì)Android這一手機(jī)系統(tǒng)有一個(gè)詳細(xì)的跟蹤介紹,方便大家學(xué)習(xí)應(yīng)用這一新的功能強(qiáng)大的開(kāi)源手機(jī)系統(tǒng),比如對(duì)Android源碼的編譯的解析的解析等等。那么今天我們將會(huì)更進(jìn)一步的對(duì)Android系統(tǒng)應(yīng)用程序的基本架構(gòu)進(jìn)行一個(gè)詳細(xì)了解。#t#

理解了這些概念對(duì)于開(kāi)發(fā)者來(lái)說(shuō)能更有效的開(kāi)發(fā)Android系統(tǒng)應(yīng)用程序.

對(duì)于一個(gè)Android應(yīng)用程序來(lái)說(shuō),是由四種構(gòu)造塊組織而成的,這四種構(gòu)造塊如下:

Activity

Intent Receiver

Service

Content Provider

但是,并不是每一個(gè)Android系統(tǒng)應(yīng)用程序都需要這四種構(gòu)造塊,這不是必須的,某些時(shí)候,我們只需要這四種中的幾種組合成我們的應(yīng)用。

當(dāng)我們明確了我們的應(yīng)用需要哪些構(gòu)造塊后,我們就需要在AndroidManifest.xml中登記這些構(gòu)造塊的清單。這是一個(gè)XML配置文件,這個(gè)配置文件用于定義我們的應(yīng)用程序的組件、組件的功能及必要條件等。這個(gè)配置文件是每個(gè)Android應(yīng)用必需的。對(duì)于AndroidMainfest.xml的Schema,參考SDK包附帶的文檔。以下,我們對(duì)四種構(gòu)造塊做一些說(shuō)明:

1、Activity

Activity是Android系統(tǒng)應(yīng)用程序中構(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è)屏幕用于寫(xiě)短消息,同時(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è)新的屏幕打開(kāi)后,前一個(gè)屏幕將會(huì)暫停,并保存在歷史堆棧中。用戶可以返回到歷史堆棧中的前一個(gè)屏幕。當(dāng)屏幕不再使用時(shí),還可以從歷史堆棧中刪除。默認(rèn)情況下,Android將會(huì)保留從主屏幕到每一個(gè)應(yīng)用的運(yùn)行屏幕。

Android系統(tǒng)應(yīng)用程序使用了Intent這個(gè)特殊類,實(shí)現(xiàn)在屏幕與屏幕之間移動(dòng)。 Intent類用于描述一個(gè)應(yīng)用將會(huì)做什么事。在Intent的描述結(jié)構(gòu)中,有兩個(gè)最重要的部分:動(dòng)作和動(dòng)作對(duì)應(yīng)的數(shù)據(jù)。典型的動(dòng)作類型有:MAIN(activity的門(mén)戶)、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。

與之有關(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中定義。

通過(guò)解析各種intent,從一個(gè)屏幕導(dǎo)航到另一個(gè)屏幕是很簡(jiǎ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的通知后,開(kāi)始運(yùn)行。當(dāng)startActivity方法被調(diào)用將觸發(fā)解析myIntent 的動(dòng)作,這個(gè)機(jī)制提供了兩個(gè)關(guān)鍵好處:

A、Activities能夠重復(fù)利用從其它組件中以Intent的形式產(chǎn)生的一個(gè)請(qǐng)求;

B、Activities可以在任何時(shí)候被一個(gè)具有相同IntentFilter的新的Activity取代。

2、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)用還可以通過(guò)使用Context.broadcastIntent()將它們自己的 intent receiver廣播給其它應(yīng)用程序。

3、Service

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

4、Content Provider

Android系統(tǒng)應(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ù)類型。

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2010-03-01 16:25:07

WCF體系架構(gòu)

2010-01-25 14:13:36

Android菜單系統(tǒng)

2010-03-01 16:41:04

WCF數(shù)據(jù)表

2009-12-22 10:16:54

WCF服務(wù)狀態(tài)

2013-12-26 15:34:19

Android開(kāi)發(fā)Android應(yīng)用基本概念

2010-02-04 09:41:03

Android應(yīng)用程序

2011-03-28 11:05:17

ODBC

2013-04-16 10:45:52

Android基本概念

2013-04-16 11:08:44

Android基本概念

2010-07-02 11:48:30

RS-232C協(xié)議

2010-03-02 16:22:31

WCF狀態(tài)應(yīng)用

2010-04-22 12:27:16

Aix操作系統(tǒng)

2009-11-25 14:56:43

2014-04-16 15:11:19

Spark

2012-09-11 14:39:03

Moosefs

2009-03-20 11:46:10

MGCP協(xié)議網(wǎng)關(guān)

2021-11-02 08:41:44

Kubernetes Nginx部開(kāi)源

2015-10-21 13:57:09

WatchKit 要點(diǎn)開(kāi)發(fā)

2023-11-15 13:12:16

2010-01-04 10:41:14

Silverlight
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)