課件android的四大組件三service_第1頁
課件android的四大組件三service_第2頁
課件android的四大組件三service_第3頁
課件android的四大組件三service_第4頁
課件android的四大組件三service_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Android的四大組件三Service主講:陳孝斌內(nèi)容回顧1、ContentProvider2、Uri、ContentUris、UriMatcher3、ContentResolver本章內(nèi)容1、Service簡(jiǎn)介2、Service生命周期3、Service的分類及使用方式4、Service使用方式一startService5、Service使用方式二bindService6、Service使用方式三使用AIDLService簡(jiǎn)介Service在Android系統(tǒng)開發(fā)之中,Services是一個(gè)重要的組成部分。如果現(xiàn)在某些程序需要中的部分操作是很消耗時(shí)間的,那么可以將這些程序定義在Service之中,這樣就可以完成程序的后臺(tái)運(yùn)行(也可以在不顯示界面的形式下運(yùn)行),即:Services實(shí)際上就相當(dāng)于是一個(gè)沒有圖形界面的Activity程序,而且當(dāng)用戶要執(zhí)行某些操作需要進(jìn)行跨進(jìn)程訪問的時(shí)候也可以使用Service來完成。一、Service是一個(gè)沒有UI界面的操作組件二、繼承android.app.Service類實(shí)現(xiàn)Service生命周期Service生命周期Service生命周期Service的生命周期控制方法:No.方法及常量類型描述1publicstaticfinalintSTART_CONTINUATION_MASK常量繼續(xù)執(zhí)行Service2publicstaticfinalintSTART_STICKY常量用于顯式的啟動(dòng)和停止Service3publicabstractIBinderonBind(Intentintent)普通設(shè)置Activity和Service之間的綁定4publicvoidonCreate()普通當(dāng)一個(gè)Service創(chuàng)建時(shí)調(diào)用5publicintonStartCommand(Intentintent,intflags,intstartId)普通啟動(dòng)Service,由startService()方法觸發(fā)6publicvoidonDestroy()普通Service銷毀時(shí)調(diào)用,由stopService()方法觸發(fā)Service生命周期context.startService()使用context.startService()啟動(dòng)Service是會(huì)會(huì)經(jīng)歷:context.startService()->onCreate()->onStartCommand()->Servicerunningcontext.stopService()|->onDestroy()->Servicestop一、如果Service還未運(yùn)行:則調(diào)用onCreate()->onStartCommand();二、如果Service已經(jīng)運(yùn)行:則只調(diào)用onStartCommand();三、如果調(diào)用者自己退出而沒有調(diào)用stopService的話,Service會(huì)一直在后臺(tái)運(yùn)行。四、所以調(diào)用startService的生命周期為:onCreate()-->onStartCommand()(可多次調(diào)用)-->onDestroy()Service生命周期context.bindService()使用使用context.bindService()啟動(dòng)Service會(huì)經(jīng)歷:context.bindService()->onCreate()->onBind()->ServicerunningonUnbind()->onDestroy()->Servicestop一、調(diào)用者會(huì)和Service綁定在一起,調(diào)用者退出了,Srevice就會(huì)調(diào)用onUnbind->onDestroy相應(yīng)退出。二、所以調(diào)用bindService的生命周期為:onCreate-->onBind(只一次,不可多次綁定)-->onUnbind-->onDestory。Service的分類及使用方式Service的分類及使用方式Service的分類:類別區(qū)別應(yīng)用本地服務(wù)(Local)服務(wù)依附在主進(jìn)程上音樂播放器遠(yuǎn)程服務(wù)(Remote)服務(wù)是獨(dú)立的進(jìn)程一些提供系統(tǒng)服務(wù)的Service,這種Service是常駐的。Service使用方式:類別特點(diǎn)通過startService啟動(dòng)的Service后臺(tái)處理工作,不進(jìn)行通信,停止服務(wù)使用stopService通過bindService來啟動(dòng)的Service該方法啟動(dòng)的服務(wù)要進(jìn)行通信。停止服務(wù)使用unbindService使用AIDL方式的Service進(jìn)行跨進(jìn)程的通信Service使用方式一startServicestartService實(shí)例一:使用startService方式啟動(dòng)Service實(shí)現(xiàn)一個(gè)音樂播放器。步驟:一、編寫一個(gè)MusicService繼承Service;二、重寫onCreate()實(shí)例化MediaPlayer對(duì)象;三、重寫onStartCommand()接收Intent傳值分別進(jìn)行相應(yīng)的操作,并編寫方法;四、重寫onDestroy()停止媒體播放,并釋放資源;五、AndroidManifest.xml中配置<serviceandroid:name=".MusicService"/>六、編寫一個(gè)Activity進(jìn)行服務(wù)測(cè)試,startService(intent)用來啟動(dòng)服務(wù),stopService(intent)用來停止服務(wù);Service使用方式二bindServicebindService實(shí)例二:使用bindService方式啟動(dòng)Service實(shí)現(xiàn)一個(gè)音樂播放器。步驟:一、定義內(nèi)部類MyBinder繼承Binder實(shí)現(xiàn)IBinder接口,并提供方法返回Service實(shí)例;二、定義IBinder接口的對(duì)象;三、實(shí)現(xiàn)Service的抽象方法onBind,并返回一個(gè)實(shí)現(xiàn)IBinder接口的對(duì)象;四、提供媒體播放的方法;五、Activity里定義ServiceConnection接口對(duì)象并實(shí)現(xiàn)ServiceConnection接口,重寫onServiceConnected方法進(jìn)行Service連接,重寫onServiceDisconnected方法進(jìn)行Service銷毀;六、Activity的onCreate方法里綁定musicService;6-1、使用服務(wù)綁定標(biāo)示實(shí)例化Intent對(duì)象;6-2、使用bindService(Intent對(duì)象,ServiceConnection接口對(duì)象,標(biāo)志位)綁定musicService;七、使用musicService調(diào)用服務(wù)的方法;八、Activity的onDestroy方法里使用unbindService解除服務(wù)綁定;九、AndroidManifest.xml中注冊(cè)service并配置intent-filterService使用方式三使用AIDLAIDL一、通常每個(gè)應(yīng)用程序都在它自己的進(jìn)程內(nèi)運(yùn)行,但有時(shí)需要在進(jìn)程之間傳遞對(duì)象(IPC通信),需要把對(duì)象拆分成操作系統(tǒng)能理解的簡(jiǎn)單形式,以便偽裝成對(duì)象跨越邊界訪問。Android提供了AIDL工具。二、AIDL(Android的IDL語言),它可以生成一段代碼,使在一個(gè)Android設(shè)備上運(yùn)行的兩個(gè)進(jìn)程使用內(nèi)部通信進(jìn)程進(jìn)行交互。三、Service需要以aidl文件的方式提供服務(wù)接口,AIDL工具生成一個(gè)包含stub服務(wù)樁類的接口,Service需要繼承這個(gè)stub,Service的onBind方法會(huì)返回實(shí)現(xiàn)類的對(duì)象。Service使用方式三使用AIDL實(shí)例三:使用AIDL方式實(shí)現(xiàn)音樂播放器Service跨進(jìn)程訪問。步驟:一、創(chuàng)建aidl文件;注意:aidl文件中可以引用其它aidl文件中定義的接口,但是不能夠引用java類文件中定義的接口。gen文件夾下,會(huì)自動(dòng)編譯生成xxx.java文件Service使用方式三使用AIDL二、Service中實(shí)現(xiàn)定義aidl接口中的內(nèi)部抽象類Stub,并實(shí)現(xiàn)定義的play()、pause()、stop()方法;Service使用方式三使用AIDL三、實(shí)現(xiàn)Service的抽象方法onBind,并返回一個(gè)實(shí)現(xiàn)IBinder接口的對(duì)象;四、重寫onDestroy()方法,停止播放釋放資源;五、AndroidManifest.xml中注冊(cè)service并配置intent-filter,exported="true"允許被其他程序調(diào)用;Service使用方式三使用AIDL六、編寫客戶端調(diào)用,把xxx.aidl文件拷貝一份到客戶端(注意包路徑要一致);七、Activity里定義ServiceConnection接口對(duì)象并實(shí)現(xiàn)ServiceConnection接口,重寫onServiceConnected方法進(jìn)行Service連接,重寫onServiceDisconnected方法進(jìn)行Service銷毀;八、Activity的onCreate方法里綁定musicService;8-1、使用服務(wù)綁定標(biāo)示實(shí)例化Intent對(duì)象;8-2、使用bindService(Intent對(duì)象,ServiceConne

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論