97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見(jiàn)教育科技集團(tuán) >> 新聞動(dòng)態(tài) >> Android資料 >> Android開發(fā)中Intent屬性詳解  
 
Android開發(fā)中Intent屬性詳解
分享到:

Intent是一個(gè)動(dòng)作的完整描述,包含了動(dòng)作的產(chǎn)生組件、接收組件和傳遞的數(shù)據(jù)信息。Android則根據(jù)Intent的描述,在不同組件間傳遞消息,負(fù)責(zé)找到對(duì)應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,組件接收到傳遞的消息,執(zhí)行相關(guān)動(dòng)作,完成組件的調(diào)用。

Android Intent激活組件不僅可用于應(yīng)用程序之間,也可用于應(yīng)用程序內(nèi)部的Activity/Service之間的交互。Intent為ActivityServiceBroadcastReceiver等組件提供交互能力,還可以啟動(dòng)Activity和Service,在Android系統(tǒng)上發(fā)布廣播消息。這里的廣播消息是指可以接收到的特定數(shù)據(jù)或消息,也可以是手機(jī)的信號(hào)變化或電池的電量過(guò)低等信息。

因此,Intent在這里起著一個(gè)媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。在SDK中給出了 Intent作用的表現(xiàn)形式。

·通過(guò)Context.startActivity() or Activity.startActivityForResult()啟動(dòng)一個(gè)Activity。

·通過(guò) Context.startService() 啟動(dòng)一個(gè)服務(wù),或者通過(guò)Context.bindService() 和后臺(tái)服務(wù)交互。

·通過(guò)廣播方法(比如Context.sendBroadcast(),Context.sendOrderedBroadcast(), Context.sendStickyBroadcast())發(fā)給broadcast receivers。

·一般情況下,Intent對(duì)某操作的抽象描述包含下面幾個(gè)部分。

·對(duì)執(zhí)行動(dòng)作的描述:操作(action)。

·對(duì)這次動(dòng)作相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行描述:數(shù)據(jù)(data)。

·對(duì)數(shù)據(jù)類型的描述:數(shù)據(jù)類型(type)。

·對(duì)執(zhí)行動(dòng)作的附加信息進(jìn)行描述:類別(category)。

·其他一切附加信息的描述:附件信息(extras)。

·對(duì)目標(biāo)組件的描述:目標(biāo)組件(component)。

1、Intent的action屬性

action是要執(zhí)行的動(dòng)作,也可以是在廣播Intent中已發(fā)生且正被報(bào)告的動(dòng)作。action部分是一個(gè)字符串對(duì)象。它描述了Intent會(huì)觸發(fā)的動(dòng)作。Android系統(tǒng)中已經(jīng)預(yù)定義了一些action常量,可以參看SDK幫助文檔,下表給出了一些標(biāo)準(zhǔn)的action常量,如表1所示。

表1 SDK中定義的標(biāo)準(zhǔn)動(dòng)作

常量 目標(biāo)組件 描述
ACTION_CALL activity 初始化一個(gè)電話呼叫
ACTION_EDIT activity 顯示可供用戶編輯的數(shù)據(jù)
ACTION_MAIN activity 將該Activity作為task的第一個(gè)Activity ,沒(méi)有數(shù)據(jù)輸入,也沒(méi)有數(shù)據(jù)返回
ACTION_SYNC activity 使服務(wù)器上的數(shù)據(jù)與移動(dòng)設(shè)備上數(shù)據(jù)同步
ACTION_BATTERY_LOW broadcast receiver 提示電池電量低
ACTION_HEADSET_PLUG broadcast receiver 提示耳機(jī)塞入或拔出
ACTION_SCREEN_ON broadcast receiver 屏幕已點(diǎn)亮
ACTION_TIMEZONE_CHANGED broadcast receiver 時(shí)區(qū)設(shè)置改變

注:除了SDK中定義的標(biāo)準(zhǔn)動(dòng)作外,也可以使用自定義動(dòng)作。自定義的動(dòng)作在使用時(shí),一般要加上包名作為前綴(為防止重復(fù)定義),如“com.example.project.SHOW_COLOR”,并可定義相應(yīng)的Activity來(lái)處理自定義動(dòng)作。

除上表介紹的action常量外,開發(fā)者也可以定義自己的action描述。一般來(lái)講,定義自己的action字符串應(yīng)該以應(yīng)用程序的包名為前綴(防止重復(fù)定義)。由于action部分很大程度上決定了一個(gè)Intent的內(nèi)容,特別是數(shù)據(jù)(data)和附加(extras)字段,就像一個(gè)方法名決定了參數(shù)和返回值。正是這個(gè)原因,應(yīng)該盡可能明確指定動(dòng)作,并緊密關(guān)聯(lián)到其他Intent字段。即應(yīng)該定義組件能夠處理的Intent對(duì)象的整個(gè)協(xié)議,而不僅僅是單獨(dú)地定義一個(gè)動(dòng)作。一個(gè)Intent對(duì)象的動(dòng)作通過(guò)setAction()方法設(shè)置,通過(guò)getAction()方法讀取。

2、Intent的data屬性

data,即執(zhí)行動(dòng)作要操作的數(shù)據(jù)。

data描述了Intent的動(dòng)作所能操作數(shù)據(jù)的MIME類型和URL,不同的Action用不同的操作數(shù)據(jù)。例如,如果Activity字段是ACTION_EDIT,data字段將顯示包含用于編輯的文檔的URI;如果Activity是ACTION_CALL,data字段是一個(gè)tel://URI和將撥打的號(hào)碼;如果Activity是ACTION_VIEW,data字段是一個(gè)//URI,接收活動(dòng)將被調(diào)用去下載和顯示URI指向的數(shù)據(jù)。在許多情況下,數(shù)據(jù)類型能夠從URI中推測(cè)出來(lái),特別是content://URIs,它表示位于設(shè)備上的數(shù)據(jù)且被內(nèi)容提供者(Content Provider)控制。但是類型也能夠顯示設(shè)置,setData()方法指定數(shù)據(jù)的URI,setType()指定MIME類型,setDataAndType()指定數(shù)據(jù)的URI和MIME類型。通過(guò)getData()讀取URI,getType()讀取類型。

匹配一個(gè)Intent到一個(gè)能夠處理data的組件,知道data的類型(它的MIME類型)和它的URI很重要。例如,一個(gè)組件能夠顯示圖像數(shù)據(jù)就不應(yīng)該被調(diào)用去播放音頻文件。

3、Intent的type屬性

數(shù)據(jù)類型(type),顯式指定Intent的數(shù)據(jù)類型(MIME)。一般Intent的數(shù)據(jù)類型能夠根據(jù)數(shù)據(jù)本身進(jìn)行判定,但是通過(guò)設(shè)置這個(gè)屬性,可以強(qiáng)制采用顯式指定的類型而不再進(jìn)行推導(dǎo)。

4、Intent的category屬性

category(類別),被執(zhí)行動(dòng)作的附加信息。例如,LAUNCHER_CATEGORY 表示Intent 的接受者應(yīng)該在Launcher中作為頂級(jí)應(yīng)用出現(xiàn);而ALTERNATIVE_CATEGORY表示當(dāng)前的Intent是一系列的可選動(dòng)作中的一個(gè),這些動(dòng)作可以在同一塊數(shù)據(jù)上執(zhí)行。其他的如表2所示。

表2 SDK中定義的標(biāo)準(zhǔn)動(dòng)作

常量 描述
CATEGORY_BROWSABLE 目標(biāo)Activity可通過(guò)瀏覽器安全啟動(dòng)以顯示一個(gè)鏈接相關(guān)的數(shù)據(jù),如圖片或郵件信息
CATEGORY_GADGET Activity可被嵌入另外一個(gè)擁有g(shù)adget的Activity中
CATEGORY_HOME Activity顯示主頁(yè),即設(shè)備打開時(shí)用戶看到的第一個(gè)界面或是用戶按Home鍵時(shí)的界面
CATEGORY_LAUNCHER Activity是一個(gè)task的初始Activity,是程序啟動(dòng)的高優(yōu)先級(jí)Activity
CATEGORY_PREFERENCE 目標(biāo)Activity為preference panel.

通過(guò)addCategory()方法添加一個(gè)種類到Intent對(duì)象中;通過(guò)removeCategory()方法刪除一個(gè)之前添加的種類;通過(guò)getCategories()方法獲取Intent對(duì)象中的所有種類。

5、Intent的extras屬性

extras(附加信息)是一組鍵值對(duì),包含了需要傳遞給目標(biāo)組件并有其處理的一些附加信息。

就像動(dòng)作關(guān)聯(lián)的特定種類的數(shù)據(jù)URIs,也關(guān)聯(lián)到某些特定的附加信息。例如,一個(gè)ACTION_TIMEZONE_CHANGE intent有一個(gè)“time-zone”的附加信息,標(biāo)識(shí)新的時(shí)區(qū),ACTION_HEADSET_PLUG有一個(gè)“state”附加信息,標(biāo)識(shí)頭部現(xiàn)在是否塞滿或未塞滿;有一個(gè)“name”附加信息,標(biāo)識(shí)頭部的類型。如果你自定義了一個(gè)SHOW_COLOR動(dòng)作,顏色值將可以設(shè)置在附加的鍵值對(duì)中。例如,如果要執(zhí)行“發(fā)送電子郵件”這個(gè)動(dòng)作,可以將電子郵件的標(biāo)題、正文等保存在extras里,傳給電子郵件發(fā)送組件。

Intent有一系列putXXX()方法用于插入各種附加數(shù)據(jù),有一系列g(shù)etXXX()方法可以取出一系列數(shù)據(jù)。

使用Extras可以為組件提供擴(kuò)展信息。

6、Intent的ComponentName屬性

ComponentName(組件),指定Intent的目標(biāo)組件的類名稱。ComponentName包含兩個(gè)String成員,分別代表組件的全稱類名和包名,包名必須和AndroidManifest.xml文件標(biāo)記中的對(duì)應(yīng)信息一致。ComponentName通過(guò)setComponent()、setClass()或setClassName()設(shè)置,通過(guò)getComponent()讀取。

通常 Android會(huì)根據(jù)Intent 中包含的其他屬性的信息(如action、data/type、category)進(jìn)行查找,終找到一個(gè)與之匹配的目標(biāo)組件。但是,如果ComponentName這個(gè)屬性有指定,將直接使用指定的組件,而不再執(zhí)行上述查找過(guò)程。指定了這個(gè)屬性以后,Intent的其他所有屬性都是可選的。

對(duì)于Intent,組件名并不是必需的。如果一個(gè)Intent對(duì)象添加了組件名,則稱該Intent為“顯式Intent”,這樣的Intent在傳遞時(shí)會(huì)直接根據(jù)組件名去尋找目標(biāo)組件。如果沒(méi)有添加組件名,則稱為“隱式Intent”,Android會(huì)根據(jù)Intent中的其他信息來(lái)確定響應(yīng)該Intent的組件。

總之,action、data/type、category和extras一起使系統(tǒng)能夠理解諸如“查看某聯(lián)系人的詳細(xì)信息”或“給某人打電話”之類的短語(yǔ)。隨著應(yīng)用不斷地加入系統(tǒng)中,Android系統(tǒng)可以添加新的action、data/type、category來(lái)擴(kuò)展功能。當(dāng)然,受益的還是應(yīng)用本身,可以利用這套語(yǔ)言機(jī)制來(lái)處理不同的動(dòng)作和數(shù)據(jù)。

 更多相關(guān)文章

·Android Intent激活組件
·Android常用組件生命周期
·Android Broadcast Receivers的使用
·詳解Android Service組件
·Android應(yīng)用組件Activity