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

下載本文檔

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

文檔簡介

1、第6章 組件通信與廣播消息 本章學(xué)習(xí)目標(biāo)了解使用Intent進行組件通信的原理掌握使用Intent啟動Activity的方法掌握獲取Activity返回值的方法掌握發(fā)送和接收廣播消息的方法6.1 Intent簡介 Intent是一個動作的完整描述,包含了動作的產(chǎn)生組件、接收組件和傳遞的數(shù)據(jù)信息Intent可在不同組件之間傳遞的消息,這個消息在到達接收組件后,接收組件會執(zhí)行相關(guān)的動作 Intent為Activity、Service和BroadcastReceiver等組件提供交互能力Intent的用途啟動Activity和Service在Android系統(tǒng)上發(fā)布廣播消息廣播消息可以是接收到特定數(shù)

2、據(jù)或消息,也可以是手機的信號變化或電池的電量過低等信息6.1 Intent簡介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.1 Intent簡介6.1.

3、1 啟動Activity顯式啟動創(chuàng)建一個Intent指定當(dāng)前的應(yīng)用程序上下文以及要啟動的Activity把創(chuàng)建好的這個Intent作為參數(shù)傳遞給startActivity()方法6.1 Intent簡介6.1.1 啟動Activity顯式啟動下面用IntentDemo示例說明如何使用Intent啟動新的Activity。IntentDemo示例包含兩個Activity,分別是IntentDemoActivity和NewActivity。程序默認(rèn)啟動的Activity是IntentDemo,在用戶點擊“啟動Activity”按鈕后,程序啟動的Activity是NewActivity 6.1 In

4、tent簡介6.1.1 啟動Activity顯式啟動在IntentDemo示例中使用了兩個Activity,因此需要在AndroidManifest.xml文件中注冊這兩個Activity。注冊Activity應(yīng)使用標(biāo)簽,嵌套在標(biāo)簽內(nèi)部。6.1 Intent簡介6.1.1 啟動Activity顯式啟動AndroidManifest.xml文件代碼如下 6.1 Intent簡介6.1.1 啟動Activity顯式啟動Android應(yīng)用程序中,用戶使用的每個組件都必須在AndroidManifest.xml文件中的節(jié)點內(nèi)定義。在上面的代碼中,節(jié)點下共有兩個節(jié)點,分別代表應(yīng)用程序中所使用的兩個Act

5、ivity,IntentDemoActivity和NewActivity。6.1 Intent簡介6.1.1 啟動Activity顯式啟動在IntentDemoActivity.java文件中,包含了使用Intent啟動Activity的核心代碼: 6.1 Intent簡介6.1.1 啟動Activity顯式啟動在點擊事件的處理函數(shù)中,Intent構(gòu)造函數(shù)的第1個參數(shù)是應(yīng)用程序上下文,在這里就是IntentDemoActivity;第2個參數(shù)是接收Intent的目標(biāo)組件,這里使用的是顯式啟動方式,直接指明了需要啟動的Activity。6.1 Intent簡介6.1.1 啟動Activity隱式

6、啟動隱式啟動的好處在于不需要指明需要啟動哪一個Activity,而由Android系統(tǒng)來決定,這樣有利于降低組件之間的耦合度。選擇隱式啟動Activity,Android系統(tǒng)會在程序運行時解析Intent,并根據(jù)一定的規(guī)則對Intent和Activity進行匹配,使Intent上的動作、數(shù)據(jù)與Activity完全吻合。匹配的組件可以是程序本身的Activity,也可以是Android系統(tǒng)內(nèi)置的Activity,還可以是第三方應(yīng)用程序提供的Activity。因此,這種方式強調(diào)了Android組件的可復(fù)用性。 6.1 Intent簡介6.1.1 啟動Activity隱式啟動如果程序開發(fā)人員希望啟動

7、一個瀏覽器,查看指定的網(wǎng)頁內(nèi)容,卻不能確定具體應(yīng)該啟動哪一個Activity,此時則可以使用Intent的隱式啟動方式,由Android系統(tǒng)在程序運行時決定具體啟動哪一個應(yīng)用程序的Activity來接收這個Intent(什么應(yīng)用場景?)程序開發(fā)人員可以將瀏覽動作和Web地址作為參數(shù)傳遞給Intent,Android系統(tǒng)則通過匹配動作和數(shù)據(jù)格式,找到最適合于此動作和數(shù)據(jù)格式的組件。 6.1 Intent簡介6.1 Intent簡介6.1.1 啟動Activity隱式啟動Intent的語法如下:6.1 Intent簡介6.1.1 啟動Activity隱式啟動Intent構(gòu)造函數(shù)的第1個參數(shù)是Int

8、ent需要執(zhí)行的動作,Android系統(tǒng)支持的常見動作字符串常量可以參考表。第2個參數(shù)是URI,表示需要傳遞的數(shù)據(jù)。6.1 Intent簡介6.1.1 啟動Activity隱式啟動WebViewIntentDemo示例說明了如何隱式啟動Activity,用戶界面6.1 Intent簡介6.3 廣播消息廣播消息Intent的另一種用途是發(fā)送廣播消息,應(yīng)用程序和Android系統(tǒng)都可以使用Intent發(fā)送廣播消息,廣播消息的內(nèi)容可以與應(yīng)用程序密切相關(guān)的數(shù)據(jù)信息,也可以Android的系統(tǒng)信息,例如網(wǎng)絡(luò)連接變化、電池電量變化、接收到短信或系統(tǒng)設(shè)置變化等。如果應(yīng)用程序注冊了BroadcastRecei

9、ver,則可以接收到指定的廣播消息。 使用Intent發(fā)送廣播消息非常簡單,只需創(chuàng)建一個Intent,并調(diào)用sendBroadcast()函數(shù)就可把Intent攜帶的信息廣播出去。但需要注意的是,在構(gòu)造Intent時必須定義一個全局唯一的字符串,用來標(biāo)識其要執(zhí)行的動作,通常使用應(yīng)用程序包的名稱。如果要在Intent傳遞額外數(shù)據(jù),可以用Intent的putExtra()方法。下面的代碼構(gòu)造用于廣播消息的Intent,并添加了額外的數(shù)據(jù),然后調(diào)用sendBroadcast()發(fā)送廣播消息:6.3 廣播消息sendBroadcast()代碼BroadcastReceiver用于監(jiān)聽廣播消息,可以在A

10、ndroidManifest.xml文件或在代碼中注冊一個BroadcastReceiver,并使用Intent過濾器指定要處理的廣播消息。6.3 廣播消息onReceive()方法創(chuàng)建BroadcastReceiver需繼承BroadcastReceiver類,并重載onReceive()方法。示例代碼如下:當(dāng)Android系統(tǒng)接收到與注冊BroadcastReceiver匹配的廣播消息時,Android系統(tǒng)會自動調(diào)用這個BroadcastReceiver接收廣播消息。在BroadcastReceiver接收到與之匹配的廣播消息后,onReceive()方法會被調(diào)用(事件處理函數(shù)),但onR

11、eceive()方法必須要在5秒鐘執(zhí)行完畢,否則Android系統(tǒng)會認(rèn)為該組件失去響應(yīng),并提示用戶強行關(guān)閉該組件。 6.3 廣播消息BroadcastReceiverDemo示例BroadcastReceiverDemo示例說明了如何在應(yīng)用程序中注冊BroadcastReceiver組件,并指定接收廣播消息的類型。BroadcastReceiverDemo示例的界面如圖所示,在點擊“發(fā)生廣播消息”按鈕后,EditText控件中內(nèi)容將以廣播消息的形式發(fā)生出去示例內(nèi)部的BroadcastReceiver將接收這個廣播消息,并顯示在用戶界面的下方。 6.3 廣播消息BroadcastReceiver

12、Demo示例用戶界面6.3 廣播消息BroadcastReceiverDemo示例AndroidManifest.xml文件中包含發(fā)送廣播消息的代碼,其關(guān)鍵代碼如下 6.3 廣播消息BroadcastReceiverDemo示例在代碼的第14行中創(chuàng)建了一個節(jié)點,在第15行中聲明了Intent過濾器的動作為“edu.hrbeu.BroadcastReceiverDemo”,這與BroadcastReceiverDemoActivity.java文件中Intent的動作相一致,表明這個BroadcastReceiver可以接收動作為“edu.hrbeu.BroadcastReceiverDemo”

13、的廣播消息 6.3 廣播消息BroadcastReceiverDemo示例MyBroadcastReceiver.java文件創(chuàng)建了一個自定義的BroadcastReceiver,其核心代碼如下: 代碼第1行首先繼承了BroadcastReceiver類,并在第3行重載了onReveive()函數(shù)。當(dāng)接收到AndroidManifest.xml文件定義的廣播消息后,程序?qū)⒆詣诱{(diào)用onReveive()函數(shù)進行消息處理。代碼第4行通過調(diào)用getStringExtra()函數(shù),從Intent中獲取標(biāo)識為message的字符串?dāng)?shù)據(jù),并使用Toast()函數(shù)將信息顯示在界面謝謝觀看/歡迎下載BY FAITH I MEAN A VISION OF GOOD ONE CHERISHES AND THE ENTHUSIASM THAT PUSHES ONE TO SEEK ITS FULFILLMENT REGARDLESS OF OBSTACLES. BY FAITH I BY FAITH內(nèi)容總結(jié)第6章 組件通信與廣播消息。指定當(dāng)前的應(yīng)用程序上下文以及要啟動的Activity。注冊Activity應(yīng)使用標(biāo)簽,嵌套在標(biāo)簽內(nèi)部。Android應(yīng)用程序中,用戶使用的每個組件都必須在AndroidManifest.xml文件中的節(jié)點內(nèi)定義。如果要在Intent傳遞額外數(shù)據(jù),可以用Inte

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論