第章組件通信與廣播消息_第1頁
第章組件通信與廣播消息_第2頁
第章組件通信與廣播消息_第3頁
第章組件通信與廣播消息_第4頁
第章組件通信與廣播消息_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第6章組件通信與廣播消息

本章學(xué)習(xí)目標了解使用Intent進行組件通信的原理掌握使用Intent啟動Activity的方法掌握獲取Activity返回值的方法掌握發(fā)送和接收廣播消息的方法6.1Intent簡介Intent是一個動作的完整描述,包含了動作的產(chǎn)生組件、接收組件和傳遞的數(shù)據(jù)信息Intent可在不同組件之間傳遞的消息,這個消息在到達接收組件后,接收組件會執(zhí)行相關(guān)的動作Intent為Activity、Service和BroadcastReceiver等組件提供交互能力Intent的用途啟動Activity和Service在Android系統(tǒng)上發(fā)布廣播消息廣播消息可以是接收到特定數(shù)據(jù)或消息,也可以是手機的信號變化或電池的電量過低等信息6.1Intent簡介6.1.1啟動Activity在Android系統(tǒng)中,應(yīng)用程序一般都有多個Activity,Intent可以實現(xiàn)不同Activity之間的切換和數(shù)據(jù)傳遞啟動Activity方式顯式啟動,必須在Intent中指明啟動的Activity所在的類隱式啟動,Android系統(tǒng)根據(jù)Intent的動作和數(shù)據(jù)來決定啟動哪一個Activity,也就是說在隱式啟動時,Intent中只包含需要執(zhí)行的動作和所包含的數(shù)據(jù),而無需指明具體啟動哪一個Activity,選擇權(quán)有Android系統(tǒng)和最終用戶來決定6.1Intent簡介6.1.1啟動Activity顯式啟動創(chuàng)建一個Intent指定當(dāng)前的應(yīng)用程序上下文以及要啟動的Activity把創(chuàng)建好的這個Intent作為參數(shù)傳遞給startActivity()方法6.1Intent簡介6.1.1啟動Activity顯式啟動下面用IntentDemo示例說明如何使用Intent啟動新的Activity。IntentDemo示例包含兩個Activity,分別是IntentDemoActivity和NewActivity。程序默認啟動的Activity是IntentDemo,在用戶點擊“啟動Activity”按鈕后,程序啟動的Activity是NewActivity6.1Intent簡介6.1.1啟動Activity顯式啟動在IntentDemo示例中使用了兩個Activity,因此需要在AndroidManifest.xml文件中注冊這兩個Activity。注冊Activity應(yīng)使用<activity>標簽,嵌套在<application>標簽內(nèi)部。6.1Intent簡介6.1.1啟動Activity顯式啟動AndroidManifest.xml文件代碼如下6.1Intent簡介6.1.1啟動Activity顯式啟動Android應(yīng)用程序中,用戶使用的每個組件都必須在AndroidManifest.xml文件中的<application>節(jié)點內(nèi)定義。在上面的代碼中,<application>節(jié)點下共有兩個<activity>節(jié)點,分別代表應(yīng)用程序中所使用的兩個Activity,IntentDemoActivity和NewActivity。6.1Intent簡介6.1.1啟動Activity顯式啟動在IntentDemoActivity.java文件中,包含了使用Intent啟動Activity的核心代碼:6.1Intent簡介6.1.1啟啟動Activity顯式啟動在點擊事件的的處理函數(shù)中中,Intent構(gòu)造函函數(shù)的第1個個參數(shù)是應(yīng)用用程序上下文文,在這里就就是IntentDemoActivity;;第2個參數(shù)數(shù)是接收Intent的的目標組件,,這里使用的的是顯式啟動動方式,直接接指明了需要要啟動的Activity。6.1Intent簡介6.1.1啟啟動Activity隱式啟動隱式啟動的好好處在于不需需要指明需要要啟動哪一個個Activity,而而由Android系統(tǒng)統(tǒng)來決定,這這樣有利于降降低組件之間間的耦合度。。選擇隱式啟動動Activity,Android系統(tǒng)會在在程序運行時時解析Intent,并并根據(jù)一定的的規(guī)則對Intent和和Activity進行行匹配,使Intent上的動作、、數(shù)據(jù)與Activity完全吻合合。匹配的組件可可以是程序本本身的Activity,也可以是是Android系統(tǒng)內(nèi)內(nèi)置的Activity,還可以是是第三方應(yīng)用用程序提供的的Activity。因此,這種方方式強調(diào)了Android組組件的可復(fù)用用性。6.1Intent簡介6.1.1啟啟動Activity隱式啟動如果程序開發(fā)發(fā)人員希望啟啟動一個瀏覽覽器,查看指指定的網(wǎng)頁內(nèi)內(nèi)容,卻不能能確定具體應(yīng)應(yīng)該啟動哪一一個Activity,,此時則可以以使用Intent的隱隱式啟動方式式,由Android系統(tǒng)在在程序運行時時決定具體啟啟動哪一個應(yīng)應(yīng)用程序的Activity來接收收這個Intent(什么應(yīng)用場場景?)程序開發(fā)人員員可以將瀏覽覽動作和Web地址作為為參數(shù)傳遞給給Intent,Android系系統(tǒng)則通過匹匹配動作和數(shù)數(shù)據(jù)格式,找到最適合于于此動作和數(shù)數(shù)據(jù)格式的組組件。6.1Intent簡介6.1Intent簡介6.1.1啟啟動Activity隱式啟動Intent的語法如下下:6.1Intent簡介6.1.1啟啟動Activity隱式啟動Intent構(gòu)造函數(shù)的的第1個參數(shù)數(shù)是Intent需要執(zhí)執(zhí)行的動作,,Android系統(tǒng)支支持的常見動動作字符串常常量可以參考考表。第2個個參數(shù)是URI,表示需需要傳遞的數(shù)數(shù)據(jù)。6.1Intent簡介6.1.1啟啟動Activity隱式啟動WebViewIntentDemo示例說明明了如何隱式式啟動Activity,用戶界面面6.1Intent簡簡介6.3廣播消消息廣播消消息Intent的另一一種用用途是是發(fā)送送廣播播消息息,應(yīng)應(yīng)用程程序和和Android系統(tǒng)都都可以以使用用Intent發(fā)送廣廣播消消息,,廣播消消息的的內(nèi)容容可以以與應(yīng)應(yīng)用程程序密密切相相關(guān)的的數(shù)據(jù)據(jù)信息息,也也可以以Android的系系統(tǒng)統(tǒng)信信息息,,例例如如網(wǎng)網(wǎng)絡(luò)絡(luò)連連接接變變化化、、電電池池電電量量變變化化、、接接收收到到短短信信或或系系統(tǒng)統(tǒng)設(shè)設(shè)置置變變化化等等。。如果果應(yīng)應(yīng)用用程程序序注注冊冊了了BroadcastReceiver,則則可可以以接接收收到到指指定定的的廣廣播播消消息息。。使用用Intent發(fā)送送廣廣播播消消息息非非常常簡簡單單,,只只需需創(chuàng)創(chuàng)建建一一個個Intent,并并調(diào)調(diào)用用sendBroadcast()函數(shù)數(shù)就就可可把把Intent攜帶帶的的信信息息廣廣播播出出去去。。但需需要要注注意意的的是是,,在在構(gòu)構(gòu)造造Intent時必必須須定定義義一一個個全局局唯唯一一的字字符符串串,,用用來來標標識識其其要要執(zhí)執(zhí)行行的的動動作作,,通通常常使使用用應(yīng)應(yīng)用用程程序序包包的的名名稱稱。。如果果要要在在Intent傳遞遞額額外外數(shù)數(shù)據(jù)據(jù),,可可以以用用Intent的putExtra()方法法。。下下面面的的代代碼碼構(gòu)構(gòu)造造用用于于廣廣播播消消息息的的Intent,并并添添加加了了額額外外的的數(shù)數(shù)據(jù)據(jù),,然然后后調(diào)調(diào)用用sendBroadcast()發(fā)送送廣廣播播消消息息::6.3廣播播消消息息sendBroadcast()代碼碼BroadcastReceiver用于于監(jiān)監(jiān)聽聽廣廣播播消消息息,,可可以以在在AndroidManifest.xml文件件或或在在代代碼碼中中注注冊冊一一個個BroadcastReceiver,并使使用用Intent過濾濾器器指指定定要要處處理理的的廣廣播播消消息息。。6.3廣播消息onReceive()方法創(chuàng)建BroadcastReceiver需繼承BroadcastReceiver類,并重載onReceive()方法。示例代代碼如下:當(dāng)Android系統(tǒng)接接收到與注冊冊BroadcastReceiver匹配的的廣播消息時時,Android系統(tǒng)統(tǒng)會自動調(diào)用用這個BroadcastReceiver接接收廣播消息息。在BroadcastReceiver接收到與之匹匹配的廣播消消息后,onReceive()方法會被調(diào)用用(事件處理理函數(shù)),但onReceive()方法必須要在在5秒鐘執(zhí)行完畢畢,否則Android系統(tǒng)會認為該該組件失去響響應(yīng),并提示示用戶強行關(guān)關(guān)閉該組件。。6.3廣播消息BroadcastReceiverDemo示例BroadcastReceiverDemo示例說明了如如何在應(yīng)用程程序中注冊BroadcastReceiver組件,并指定定接收廣播消消息的類型。。BroadcastReceiverDemo示例的界面如如圖所示,在在點擊“發(fā)生生廣播消息””按鈕后,EditText控件中內(nèi)容將將以廣播消息息的形式發(fā)生生出去示例內(nèi)部的BroadcastReceiver將接收這個廣廣播消息,并并顯示在用戶戶界面的下方方。6.3廣播消息BroadcastReceiverDemo示例用戶界面面6.3廣播消息BroadcastReceiverDemo示例AndroidManifest.xml文件件中包含發(fā)送送廣播消息的的代碼,其關(guān)關(guān)鍵代碼如下下6.3廣播播消息BroadcastReceiverDemo示例在代碼的第14行中創(chuàng)建建了一個<receiver>節(jié)點點,在第15行中聲明了了Intent過濾器的的動作為“edu.hrbeu.BroadcastReceiverDemo”,這與BroadcastReceiverDemoActivity.java文件中Intent的的動作相一致致,表明這個BroadcastReceiver可以接收收動作為“edu.hrbeu.BroadcastReceiverDemo”的廣播消消息6.3廣播消息BroadcastReceiverDemo示例MyBroadcastReceiver.java文件創(chuàng)建了一一個自定義的的BroadcastReceiver,其核心代碼碼如下:代碼第1行首首先繼承了BroadcastReceiver類,并在在第3行重載載了onReveive()函數(shù)。。當(dāng)接收到AndroidManifest.xml文件件定義的廣播播消息后,程程序?qū)⒆?/p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論