《Android項(xiàng)目開發(fā)實(shí)戰(zhàn)》課件 項(xiàng)目5 Android程序組件應(yīng)用_第1頁(yè)
《Android項(xiàng)目開發(fā)實(shí)戰(zhàn)》課件 項(xiàng)目5 Android程序組件應(yīng)用_第2頁(yè)
《Android項(xiàng)目開發(fā)實(shí)戰(zhàn)》課件 項(xiàng)目5 Android程序組件應(yīng)用_第3頁(yè)
《Android項(xiàng)目開發(fā)實(shí)戰(zhàn)》課件 項(xiàng)目5 Android程序組件應(yīng)用_第4頁(yè)
《Android項(xiàng)目開發(fā)實(shí)戰(zhàn)》課件 項(xiàng)目5 Android程序組件應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Android項(xiàng)目開發(fā)任務(wù)5-1:Activity應(yīng)用導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),還需掌握其常用組件的應(yīng)用,本次任務(wù)應(yīng)用Activity完成不同界面及其Activity類的切換。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】應(yīng)用Activity組件,實(shí)現(xiàn)不同的Activity類及其界面間的跳轉(zhuǎn)。導(dǎo)入任務(wù)【任務(wù)描述】Activity是Android的四大組件之一,它是一種可以包含用戶界面的組件,主要用于和用戶進(jìn)行交互,比如打電話、照相、發(fā)送郵件、或者顯示地圖。由于Activity用于顯示用戶界面,因此用戶可以通過Activity交互完成相關(guān)操作。在Android系統(tǒng)中,一個(gè)App允許有多個(gè)Activity。這就會(huì)涉及不同Activity之間的跳轉(zhuǎn)問題了。本次任務(wù)將介紹應(yīng)用Activity組件編程實(shí)現(xiàn)不同Activity類及其界面間的跳轉(zhuǎn)。導(dǎo)入任務(wù)【任務(wù)分析】本次任務(wù)中,我們將創(chuàng)建2個(gè)Activity,分別為MainActivity和NextActivity。其中:MainActivity的界面設(shè)計(jì)包含一個(gè)TextView和一個(gè)Button。

TextView用于顯示歡迎文字,

Button用于跳轉(zhuǎn)。NextActivity的界面設(shè)計(jì)包含一個(gè)ImageView和一個(gè)TextView。

ImageView用于展示一幅圖片,

TextView用于標(biāo)記NextActivity。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:設(shè)計(jì)MainActivity界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“activitydemo”。在項(xiàng)目“activitydemo”中雙擊打開界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MainActivity界面代碼的編寫。任務(wù)實(shí)施操作2:設(shè)計(jì)NextActivity界面。在項(xiàng)目“activitydemo”中創(chuàng)建一個(gè)新的AndroidActivity類,命名為“NextActivity”,并將對(duì)應(yīng)的界面文件命名為“activity_next.xml”。效果如下:任務(wù)實(shí)施操作3:雙擊打開界面程序“activity_next.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成NextActivity界面代碼的編寫。任務(wù)實(shí)施操作3:編寫跳轉(zhuǎn)的功能代碼。雙擊打開“MainActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成跳轉(zhuǎn)的功能代碼編寫。相關(guān)知識(shí)認(rèn)識(shí)ActivityActivity生命周期技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)Activity在Android開發(fā)中,Activity是一個(gè)應(yīng)用程序組件,提供一個(gè)界面,用戶可以用來交互為了完成某項(xiàng)任務(wù),例如撥號(hào)、拍照、發(fā)送email、看地圖。每一個(gè)Activity被給予一個(gè)窗口,在上面可以繪制用戶接口。窗口通常充滿屏幕,但也可以小于屏幕而浮于其它窗口之上。一般來說,一個(gè)Android應(yīng)用程序通常由一個(gè)或多個(gè)Activity組成,它們通常是松耦合關(guān)系。其中一個(gè)Activity被指定為MainActivity,即當(dāng)?shù)谝淮螁?dòng)應(yīng)用程序時(shí)用戶看到界面的那個(gè)Activity。在Activity中可以啟動(dòng)另一個(gè)Activity以便完成不同的動(dòng)作。每一次一個(gè)Activity啟動(dòng),前一個(gè)Activity就停止了,但是會(huì)被Android系統(tǒng)保留在一個(gè)棧中。當(dāng)一個(gè)新Activity啟動(dòng),它被推送到棧頂,取得用戶焦點(diǎn)。棧采用“后進(jìn)先出”原則,所以,當(dāng)用戶完成當(dāng)前Activity然后點(diǎn)擊返回按鈕,之前的Activity將獲得恢復(fù)。技術(shù)知識(shí)知識(shí)點(diǎn)2:Activity生命周期Activity生命周期如右圖,包含以下幾個(gè)過程:(1)啟動(dòng)Activity:系統(tǒng)會(huì)先調(diào)用onCreate方法,然后調(diào)用onStart方法,最后調(diào)用onResume,Activity進(jìn)入運(yùn)行狀態(tài)。(2)當(dāng)前Activity被其他Activity覆蓋其上或被鎖屏:系統(tǒng)會(huì)調(diào)用onPause方法,暫停當(dāng)前Activity的執(zhí)行。(3)當(dāng)前Activity由被覆蓋狀態(tài)回到前臺(tái)或解鎖屏:系統(tǒng)會(huì)調(diào)用onResume方法,再次進(jìn)入運(yùn)行狀態(tài)。(4)當(dāng)前Activity轉(zhuǎn)到新的Activity界面或按Home鍵回到主屏,自身退居后臺(tái):系統(tǒng)會(huì)先調(diào)用onPause方法,然后調(diào)用onStop方法,進(jìn)入停滯狀態(tài)。(5)用戶后退回到此Activity:系統(tǒng)會(huì)先調(diào)用onRestart方法,然后調(diào)用onStart方法,最后調(diào)用onResume方法,再次進(jìn)入運(yùn)行狀態(tài)。(6)當(dāng)前Activity處于被覆蓋狀態(tài)或者后臺(tái)不可見狀態(tài),即第2步和第4步,系統(tǒng)內(nèi)存不足,殺死當(dāng)前Activity,而后用戶退回當(dāng)前Activity:再次調(diào)用onCreate方法、onStart方法、onResume方法,進(jìn)入運(yùn)行狀態(tài)。(7)用戶退出當(dāng)前Activity:系統(tǒng)先調(diào)用onPause方法,然后調(diào)用onStop方法,最后調(diào)用onDestory方法,結(jié)束當(dāng)前Activity。拓展訓(xùn)練應(yīng)用Activity組件編程實(shí)現(xiàn)一個(gè)登錄界面的跳轉(zhuǎn)。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】創(chuàng)建一個(gè)Android應(yīng)用程序項(xiàng)目,在項(xiàng)目中使用2個(gè)Activity類編程實(shí)現(xiàn)以下登錄界面的跳轉(zhuǎn)。劉國(guó)3c365@Android項(xiàng)目開發(fā)任務(wù)5-2:Intent應(yīng)用導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),還需掌握其常用組件的應(yīng)用,本次任務(wù)應(yīng)用Intent完成不同Activity界面間的跳轉(zhuǎn)和數(shù)據(jù)傳遞。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】通過Intent應(yīng)用,設(shè)計(jì)一個(gè)程序?qū)崿F(xiàn)軟件界面間的跳轉(zhuǎn)和數(shù)據(jù)傳遞。導(dǎo)入任務(wù)【任務(wù)描述】Intent組件雖然不是Android系統(tǒng)中的四大組件,但卻是連接四大組件的橋梁。Android中提供了Intent機(jī)制來協(xié)助應(yīng)用間的交互與通訊。它能在程序運(yùn)行的過程中連接兩個(gè)不同的組件。通過Intent,應(yīng)用程序可以向Android系統(tǒng)表達(dá)某種請(qǐng)求或者意愿,Android會(huì)根據(jù)意愿的內(nèi)容選擇適當(dāng)?shù)慕M件來響應(yīng)。activity、service、broadcastreceiver等組件之間是通過Intent進(jìn)行通信的。本次任務(wù)由2個(gè)界面組成。當(dāng)點(diǎn)擊第一個(gè)界面中的按鈕時(shí),通過Intent組件將圖片和文字?jǐn)?shù)據(jù)傳遞到第二個(gè)界面顯示出來。導(dǎo)入任務(wù)【任務(wù)分析】本次任務(wù)用2個(gè)Activity類(MainActivity和SecActivity)分別完成2個(gè)界面的設(shè)計(jì)與制作。其中在MainActivity界面設(shè)置一個(gè)按鈕Button控件,通過按鈕點(diǎn)擊事件,使用Intent組件將圖片(圣誕老人)和文字(“歡迎光臨”)傳遞到SecActivity。然后在SecActivity類中將圖片和文字顯示出來。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:創(chuàng)建MainActivity界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“intentdemo”。在項(xiàng)目“intentdemo”中雙擊打開界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MainActivity界面代碼的編寫。任務(wù)實(shí)施操作2:創(chuàng)建SecActivity界面。在項(xiàng)目“intentdemo”中創(chuàng)建一個(gè)新的AndroidActivity類,命名為“SecActivity”,并將對(duì)應(yīng)的界面文件命名為“activity_sec.xml”。雙擊打開界面程序“activity_sec.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成SecActivity界面代碼的編寫。任務(wù)實(shí)施操作3:編寫MainActivity功能代碼。雙擊打開“MainActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,使用Intent完成跳轉(zhuǎn)和數(shù)據(jù)傳遞的功能代碼編寫。任務(wù)實(shí)施操作3:編寫SecActivity功能代碼。雙擊打開“SecActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成數(shù)據(jù)接收和顯示的功能代碼編寫。相關(guān)知識(shí)認(rèn)識(shí)IntentIntent包含的六大信息技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)IntentIntent是不同組件之間相互通訊的紐帶,封裝了不同組件之間通訊的條件。Intent本身是定義為一個(gè)類(Class),一個(gè)Intent對(duì)象表達(dá)一個(gè)目的(Goal)或期望(Expectation),敘述其所期望的服務(wù)或動(dòng)作、與動(dòng)作有關(guān)的數(shù)據(jù)等。Android則根據(jù)此Intent對(duì)象之?dāng)⑹觯?fù)責(zé)配對(duì),找出相配的組件,然后將Intent對(duì)象傳遞給所找到的組件。Intent是一個(gè)保存著消息內(nèi)容的Intent對(duì)象。對(duì)于activity和服務(wù)來說,它指明了請(qǐng)求的操作名稱以及作為操作對(duì)象的數(shù)據(jù)的URI和其它一些信息。比如說,它可以承載對(duì)一個(gè)Activity的請(qǐng)求,讓它為用戶顯示一張圖片,或者讓用戶編輯一些文本。而對(duì)于廣播接收器而言,Intent對(duì)象指明了聲明的行為。比如,它可以對(duì)所有感興趣的對(duì)象聲明照相按鈕被按下。技術(shù)知識(shí)知識(shí)點(diǎn)2:Intent包含的六大信息(1)Componentname(組件名稱),指定Intent的目標(biāo)組件的類名稱。定義要啟動(dòng)哪一個(gè)組件,啟動(dòng)的組件不一定是Activity。(2)Action(動(dòng)作),指定新啟動(dòng)組建的動(dòng)作。指定Intent的執(zhí)行動(dòng)作,比如調(diào)用撥打電話組件。(3)Data(數(shù)據(jù)),向另外一個(gè)Activity里面?zhèn)魉偷臄?shù)據(jù)。(4)Category(類別),向另外一個(gè)Activity傳送的多個(gè)鍵值對(duì),被執(zhí)行動(dòng)作的附加信息。例如應(yīng)用的啟動(dòng)Activity在intent-filter中設(shè)置category。(5)Extras(附加信息),為處理Intent組件提供附加的信息。可通過putXX()和getXX()方法存取信息;也可以通過創(chuàng)建Bundle對(duì)象,再通過putExtras()和getExtras()方法來存取。(6)Flags(標(biāo)記),指示Android如何啟動(dòng)目標(biāo)Activity,設(shè)置方法為調(diào)用Intent的setFlags方法。拓展訓(xùn)練使用Intent編程實(shí)現(xiàn)一個(gè)登錄界面的數(shù)據(jù)傳遞。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】創(chuàng)建一個(gè)Android應(yīng)用程序項(xiàng)目,在項(xiàng)目中使用2個(gè)Activity類編程實(shí)現(xiàn)以下登錄界面的跳轉(zhuǎn)和數(shù)據(jù)傳遞。劉國(guó)3c365@Android項(xiàng)目開發(fā)任務(wù)5-3:Service應(yīng)用導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),還需掌握其常用組件的應(yīng)用,本次任務(wù)應(yīng)用Service完成一個(gè)音樂播放器的制作。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】應(yīng)用Service組件設(shè)計(jì)并制作一個(gè)簡(jiǎn)易的音樂播放器。導(dǎo)入任務(wù)【任務(wù)描述】Service組件在Android系統(tǒng)中被稱之為“后臺(tái)服務(wù)”組件。因?yàn)槠浔旧淼倪\(yùn)行并不依賴于用戶可視的UI界面,因此從任務(wù)需求上來理解,Service組件非常適用于Android系統(tǒng)中的音樂播放(可以后臺(tái)運(yùn)行,不影響前端界面操作)。本次任務(wù)將應(yīng)用Service組件實(shí)現(xiàn)音樂播放器的音樂播放功能。導(dǎo)入任務(wù)【任務(wù)分析】Service組件的使用方式有2種:第一種是startService(),第二種是bindService()。本次任務(wù)分別采用startService和bindService兩種方式啟動(dòng)和停止播放音樂服務(wù)本次任務(wù)界面設(shè)計(jì)使用線性布局,自上而下設(shè)計(jì)4個(gè)按鈕Button。其中2個(gè)Button用于startService啟動(dòng)播放和停止音樂;另2個(gè)Button用于bindService啟動(dòng)播放和停止音樂任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:設(shè)計(jì)播放器界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“servicedemo”。在項(xiàng)目“servicedemo”中雙擊打開界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MainActivity界面代碼的編寫。任務(wù)實(shí)施操作2:創(chuàng)建MusicService類。在項(xiàng)目“servicedemo”中創(chuàng)建一個(gè)Service類,命名為“MusicService”。雙擊打開程序“MusicService.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼。任務(wù)實(shí)施操作3:編寫按鈕程序。雙擊打開程序“MainActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼。任務(wù)實(shí)施操作4:注冊(cè)Service類。在項(xiàng)目“servicedemo”中雙擊打開程序“AndroidManifest.xml”,在代碼編輯窗口添加MusicService類的注冊(cè)代碼。相關(guān)知識(shí)認(rèn)識(shí)ServiceService使用方式技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)ServiceService服務(wù)是Android系統(tǒng)最常用的四大部件之一,Android支持Service服務(wù)的原因主要目的有兩個(gè),一是簡(jiǎn)化后臺(tái)任務(wù)的實(shí)現(xiàn),二是實(shí)現(xiàn)在同一臺(tái)設(shè)備當(dāng)中跨進(jìn)程的遠(yuǎn)程信息通信。Service服務(wù)主要分為L(zhǎng)ocalService本地服務(wù)與RemoteService遠(yuǎn)程服務(wù)兩種,本地服務(wù)只支持同一進(jìn)程內(nèi)的應(yīng)用程序進(jìn)行訪問,遠(yuǎn)程服務(wù)可通過AIDL(AndroidInterfaceDefinitionLanguage)技術(shù)支持跨進(jìn)程訪問。Service服務(wù)可以通過Context.startService()和Context.bindService()進(jìn)行啟動(dòng),一般LocalService本地服務(wù)可使用其中一種方法啟動(dòng),但RemoteService遠(yuǎn)程服務(wù)只能使用Context.bindService()啟動(dòng),而兩種調(diào)用方式在使用場(chǎng)景與活動(dòng)流程中都存在差異。技術(shù)知識(shí)知識(shí)點(diǎn)2:Service使用方式第一類是直接通過Context.startService()啟動(dòng),通過Context.stopService()結(jié)束Service,其特點(diǎn)在于調(diào)用簡(jiǎn)單,方便控制。缺點(diǎn)在于一旦啟動(dòng)了Service服務(wù),除了再次調(diào)用或結(jié)束服務(wù)外就再無法對(duì)服務(wù)內(nèi)部狀態(tài)進(jìn)行操控,缺乏靈活性。第二類是通過Context.bindService()啟動(dòng),通過Context.unbindService()結(jié)束,相對(duì)其特點(diǎn)在運(yùn)用靈活,可以通過IBinder接口中獲取Service的句柄,對(duì)Service狀態(tài)進(jìn)行檢測(cè)。從Android系統(tǒng)設(shè)計(jì)的架構(gòu)上看,startService()是用于啟動(dòng)本地服務(wù),bindService()更多是用于對(duì)遠(yuǎn)程服務(wù)進(jìn)行綁定。當(dāng)然,也可以結(jié)合兩者進(jìn)行混合式應(yīng)用,先通過startService()啟動(dòng)服務(wù),然后通過bindService()、unbindService()方法進(jìn)行多次綁定,以獲取Service服務(wù)在不同狀態(tài)下的信息,最后通過stopService()方法結(jié)束Service運(yùn)行。拓展訓(xùn)練應(yīng)用Service組件編程實(shí)現(xiàn)一個(gè)背景音樂控制界面的功能實(shí)現(xiàn)。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】創(chuàng)建一個(gè)Android應(yīng)用程序項(xiàng)目,使用Service編程實(shí)現(xiàn)以下背景音樂控制的功能。劉國(guó)3c365@Android項(xiàng)目開發(fā)任務(wù)5-4:Broadcast應(yīng)用導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),還需掌握其常用組件的應(yīng)用,本次任務(wù)應(yīng)用Broadcast完成廣播消息的發(fā)送。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】使用Broadcast組件編程實(shí)現(xiàn)消息的廣播發(fā)送。導(dǎo)入任務(wù)【任務(wù)描述】在Android系統(tǒng)中,Broadcast用于發(fā)送與接收廣播信息,是Android的四大組件之一。Broadcast組件可以用于在不同應(yīng)用之間傳遞和共享數(shù)據(jù)或者同一應(yīng)用的不同組件之間數(shù)據(jù)的共享,比如音樂播放器的UI更新。本次任務(wù)應(yīng)用Broadcast組件來實(shí)現(xiàn)對(duì)一條預(yù)先寫好的廣播信息的發(fā)送。導(dǎo)入任務(wù)【任務(wù)分析】本次任務(wù)界面設(shè)計(jì)簡(jiǎn)單,使用線性布局,在界面上只設(shè)計(jì)一個(gè)按鈕Button。當(dāng)點(diǎn)擊按鈕時(shí),發(fā)送一條事先寫好的廣播消息。發(fā)送后的廣播信息以Toast方式進(jìn)行顯示。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:創(chuàng)建程序界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“broadcastdemo”。在項(xiàng)目“broadcastdemo”中雙擊打開界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MainActivity界面代碼的編寫。任務(wù)實(shí)施操作2:創(chuàng)建BroadcastReceiver類。在項(xiàng)目“broadcastdemo”中創(chuàng)建一個(gè)BroadcastReceiver類,命名為“MsgReceiver”。雙擊打開程序“MsgReceiver.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼。任務(wù)實(shí)施操作3:注冊(cè)廣播組件。在項(xiàng)目“servicedemo”中雙擊打開程序“AndroidManifest.xml”,在代碼編輯窗口添加MsgReceiver類的注冊(cè)代碼。任務(wù)實(shí)施操作4:編寫按鈕程序。雙擊打開程序“MainActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼。相關(guān)知識(shí)認(rèn)識(shí)BroadcastBroadcast的兩種類型廣播接收器BroadcastReceiver創(chuàng)建BroadcastReceiver的方法技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)Broadcast在Android系統(tǒng)中,廣播(Broadcast)是在組件之間傳播數(shù)據(jù)的一種機(jī)制。這些Broadcast甚至是可以位于不同的進(jìn)程中,這樣它就像Binder機(jī)制一樣,起到進(jìn)程間通信的作用。在Android系統(tǒng)中,為什么需要廣播機(jī)制呢?廣播機(jī)制,本質(zhì)上它就是一種組件間的通信方式,如果是兩個(gè)組件位于不同的進(jìn)程當(dāng)中,那么可以用Binder機(jī)制來實(shí)現(xiàn),如果兩個(gè)組件是在同一個(gè)進(jìn)程中,那么它們之間可以用來通信的方式就更多了。然而,廣播機(jī)制卻是不可替代的,它和Binder機(jī)制不一樣的地方在于,廣播的發(fā)送者和接收者事先是不需要知道對(duì)方的存在的,這樣帶來的好處便是,系統(tǒng)的各個(gè)組件可以松耦合地組織在一起,這樣系統(tǒng)就具有高度的可擴(kuò)展性,容易與其它系統(tǒng)進(jìn)行集成。技術(shù)知識(shí)知識(shí)點(diǎn)2:Broadcast的兩種類型Broadcast廣播可以分為無序廣播和有序廣播兩種類型。無序廣播:所有跟廣播的intent匹配的廣播接收者都可以收到該廣播,并且是沒有先后順序(同時(shí)收到)。有序廣播:所有跟廣播的intent匹配的廣播接收者都可以收到該廣播,但是會(huì)按照廣播接收者的優(yōu)先級(jí)來決定接收的先后順序。技術(shù)知識(shí)知識(shí)點(diǎn)3:廣播接收器BroadcastReceiver廣播分為兩個(gè)角色:廣播發(fā)送器、廣播接收器。其中廣播接收器BroadcastReceiver是一個(gè)專注于接收廣播通知信息,并做出對(duì)應(yīng)處理的組件。Android應(yīng)用程序可以擁有任意數(shù)量的廣播接收器對(duì)所有它感興趣的通知信息予以響應(yīng),并且所有的接收器均繼承自BroadcastReceiver基類。BroadcastReceiver生命周期過程從對(duì)象調(diào)用它開始,到onReceiver方法執(zhí)行完成之后結(jié)束。另外,每次廣播被接收后會(huì)重新創(chuàng)建BroadcastReceiver對(duì)象,并在onReceiver方法中執(zhí)行完就銷毀。技術(shù)知識(shí)知識(shí)點(diǎn)4:創(chuàng)建BroadcastReceiver的方法第一步:創(chuàng)建BroadcastReceiver的子類:由于BroadcastReceiver本質(zhì)上是一種監(jiān)聽器,所以創(chuàng)建BroadcastReceiver的方法也非常簡(jiǎn)單,只需要?jiǎng)?chuàng)建一個(gè)BroadcastReceiver的子類然后重寫onReceive(Contextcontext,Intentintent)方法即可。第二步:注冊(cè)BroadcastReceiver一旦實(shí)現(xiàn)了BroadcastReceiver,接下就應(yīng)該指定該BroadcastReceiver能匹配的Intent即注冊(cè)BroadcastReceiver。在配置AndroidManifest.xml配置文件中注冊(cè),通過這種方式注冊(cè)的廣播為常駐型廣播,也就是說如果應(yīng)用程序關(guān)閉了,有相應(yīng)事件觸發(fā)程序還是會(huì)被系統(tǒng)自動(dòng)調(diào)用運(yùn)行。例如:<!--在配置文件中注冊(cè)BroadcastReceiver能夠匹配的Intent--><receiverandroid:name="com.example.test.MyBroadcastReceiver"><intent-filter><actionandroid:name="ent.action.MyBroadcastReceiver"></action><categoryandroid:name="ent.category.DEFAULT"></category></intent-filter></receiver>拓展訓(xùn)練應(yīng)用Broadcast組件編程實(shí)現(xiàn)廣播的注冊(cè)、發(fā)送及注銷。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】創(chuàng)建一個(gè)Android應(yīng)用程序項(xiàng)目,使用BroadcastReceiver編程實(shí)現(xiàn)以下功能。要求:①點(diǎn)擊【發(fā)送廣播】按鈕的時(shí)候,因?yàn)槌绦驔]有注冊(cè)BraodcastReceiver,所以使用Toast輸出“沒有注冊(cè)BraodcastReceiver”的信息。②當(dāng)先點(diǎn)擊【注冊(cè)廣播接收器】再點(diǎn)擊【發(fā)送廣播】按鈕的時(shí)候,這時(shí)程序會(huì)動(dòng)態(tài)的注冊(cè)BraodcastReceiver,之后會(huì)調(diào)用onReceive()方法,通過Toast輸出“這是廣播測(cè)試”信息。③當(dāng)點(diǎn)擊【注銷廣播接收器】按鈕的時(shí)候,這時(shí)程序會(huì)注銷BraodcastReceiver,再點(diǎn)擊【發(fā)送廣播】,使用Toast輸出“沒有注冊(cè)BraodcastReceiver”的信息。劉國(guó)3c365@Android項(xiàng)目開發(fā)任務(wù)5-5:音樂盒設(shè)計(jì)與實(shí)現(xiàn)導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),還需掌握其常用組件的應(yīng)用,本次任務(wù)應(yīng)用Activity、Service和Broadcast組件完成一個(gè)音樂盒的制作。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】應(yīng)用Activity、Service、Broadcast組件設(shè)計(jì)并制作一個(gè)Android音樂盒軟件。導(dǎo)入任務(wù)【任務(wù)描述】本次任務(wù),我們將使用前面學(xué)習(xí)過的Activity、Service、Broadcast等三大組件來中制作一個(gè)簡(jiǎn)易的音樂盒(音樂播放器)。其中:Activity完成音樂盒界面的設(shè)計(jì)與制作;Service實(shí)現(xiàn)音樂的后臺(tái)播放功能;

Broadcast負(fù)責(zé)音樂控制的消息傳遞。導(dǎo)入任務(wù)【任務(wù)分析】音樂盒的界面設(shè)計(jì)采用水平線性布局設(shè)計(jì),包括2個(gè)ImageButton和2個(gè)TextView。其中,第一個(gè)ImageButton用于實(shí)現(xiàn)音樂的播放和暫停功能。第二個(gè)ImageButton用于停止音樂的播放。任務(wù)實(shí)施創(chuàng)建程序界面編寫Activity程序編寫Service程序注冊(cè)Service任務(wù)實(shí)施操作1:創(chuàng)建程序界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“musicboxdemo”。在項(xiàng)目“musicboxdemo”中雙擊打開界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MainActivity界面代碼的編寫。任務(wù)實(shí)施操作2:編寫Activity程序。雙擊打開程序“MainActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序。任務(wù)實(shí)施操作3:編寫Service程序。在項(xiàng)目“musicboxdemo”中創(chuàng)建一個(gè)Service類,命名為“MusicService”。雙擊打開程序“MusicService.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼。任務(wù)實(shí)施操作4:注冊(cè)Service。在項(xiàng)目“servicedemo”中雙擊打開程序“AndroidManifest.xml”,在代碼編輯窗口添加Service類的注冊(cè)代碼。相關(guān)知識(shí)認(rèn)識(shí)MediaPlayer如何獲得MediaPlayer實(shí)例如何設(shè)置要播放的文件對(duì)播放器的主要控制方法設(shè)置播放器的監(jiān)聽器技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)MediaPlayerAndroid提供了常見的音頻、視頻的編碼和解碼機(jī)制。Android下對(duì)于音頻、視頻的支持均需要使用到MediaPlayer。MediaPlayer是一個(gè)主要用來控制Android下播放文件或流的類,它位于Android多媒體包下"android.media.MediaPlayer"。MediaPlayer支持的數(shù)據(jù)源包括本地文件、內(nèi)部的Uri(內(nèi)容提供者)、外部Uri。借助于多媒體類MediaPlayer的支持,開發(fā)人員可以很方便在在應(yīng)用中播放音頻、視頻。技術(shù)知識(shí)知識(shí)點(diǎn)2:如何獲得MediaPlayer實(shí)例可以使用直接new的方式:MediaPlayermp=newMediaPlayer();也可以使用c

溫馨提示

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

評(píng)論

0/150

提交評(píng)論