Android移動(dòng)應(yīng)用設(shè)計(jì)與開發(fā)-第06章_第1頁(yè)
Android移動(dòng)應(yīng)用設(shè)計(jì)與開發(fā)-第06章_第2頁(yè)
Android移動(dòng)應(yīng)用設(shè)計(jì)與開發(fā)-第06章_第3頁(yè)
Android移動(dòng)應(yīng)用設(shè)計(jì)與開發(fā)-第06章_第4頁(yè)
Android移動(dòng)應(yīng)用設(shè)計(jì)與開發(fā)-第06章_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Android移動(dòng)應(yīng)用設(shè)計(jì)與開發(fā)第6章服務(wù)6.1本地服務(wù)6.1.1兩種啟動(dòng)方式6.1.2生命周期6.2遠(yuǎn)程服務(wù)6.3服務(wù)小實(shí)例6.4本章小結(jié)本章導(dǎo)讀第6章服務(wù)Service是Android系統(tǒng)中的四大組件之一,它與Activity不同,它是不能與用戶交互的。它是一種長(zhǎng)生命周期的,沒有可視化界面,運(yùn)行于后臺(tái)的一種服務(wù)程序。6.1本地服務(wù)本地服務(wù)(LocalService)用于應(yīng)用程序內(nèi)部,可以實(shí)現(xiàn)應(yīng)用程序自己的一些耗時(shí)任務(wù),比如查詢升級(jí)信息、網(wǎng)絡(luò)傳輸,或者在一些場(chǎng)合需要在后臺(tái)執(zhí)行,比如播放音樂,并不占用應(yīng)用程序比如Activity所屬的線程,而是單開線程后臺(tái)執(zhí)行,這樣用戶體驗(yàn)比較好。6.1.1兩種啟動(dòng)方式Service有兩種啟動(dòng)方式:1、通過(guò)Context.bindService(Intentintent,ServiceConnectionconn,intflags)

綁定時(shí),bindService->onCreate()–>onBind();綁定Service需要三個(gè)參數(shù):intent:Intent對(duì)象,需要定義指向服務(wù)類。conn:ServiceConnection接口對(duì)象,創(chuàng)建該對(duì)象要實(shí)現(xiàn)它的onServiceConnected()和

onServiceDisconnected()來(lái)判斷連接成功或者是斷開連接。flags:創(chuàng)建Service模式,一共有以下三種模式:Service.BIND_AUTO_CREATE:指定綁定的時(shí)候自動(dòng)創(chuàng)建Service,最常使用的模式Service.BIND_DEBUG_UNBIND:測(cè)試綁定的時(shí)候,進(jìn)行調(diào)試所用Service.BIND_NOT_FOREGROUND:不在前臺(tái)進(jìn)行綁定6.1.1兩種啟動(dòng)方式

解綁定,unbindService–>onUnbind()–>onDestory();

此時(shí)如果調(diào)用者(如Activity)直接退出,Service由于與調(diào)用者綁定在一起,則Service會(huì)隨著調(diào)用者一同停止。2、通過(guò)Context.startService(Intentintent)啟動(dòng)時(shí),startService–>onCreate()–>onStart();停止時(shí),stopService–>onDestroy();6.1.2生命周期Service生命周期一般有兩種運(yùn)行模式,這兩種模式并不是完全分離的:

該模式下,Service是通過(guò)Context.startService()方法開始,以Context.stopService()方法停止。

外部程序建立一個(gè)到Service的連接,通過(guò)這個(gè)連接來(lái)操作Service。建立連接開始于Context.bindService(),結(jié)束于Context.unbindService()。多個(gè)客戶端可以綁定到同一個(gè)Service,如果Service沒有啟動(dòng),可以通過(guò)Context.bindService()啟動(dòng)它。在程序沒有停止Service或者Service自己停止的情況下,Service將一直在后臺(tái)運(yùn)行。1可以通過(guò)接口被外部程序調(diào)用。26.1.2生命周期Service的生命周期:12整個(gè)生命周期活動(dòng)生命周期從onCreate()開始,到onDestroy()結(jié)束,跟Activity很類似。Service生命周期在onCreate()中執(zhí)行初始化操作,在onDestroy()中釋放所有用到的資源。開始于onStart(),或者開始于onBind()方法。在音樂播放器中,使用Context.startService()方法啟動(dòng),音樂服務(wù)會(huì)通過(guò)Intent來(lái)查看要播放哪首歌曲并開始播放。6.1.2生命周期兩種不同的啟動(dòng)方式?jīng)Q定了服務(wù)的生命周期不完全相同,但這兩種服務(wù)過(guò)程并非完全對(duì)立的,有時(shí)候我們需要將它們結(jié)合起來(lái)使用。6.2遠(yuǎn)程服務(wù)遠(yuǎn)程服務(wù)(RemoteService)用于Android系統(tǒng)內(nèi)部的應(yīng)用程序之間??梢酝ㄟ^(guò)自己定義并暴露出來(lái)的接口進(jìn)行程序操作。應(yīng)用程序建立一個(gè)到服務(wù)對(duì)象的連接,并通過(guò)那個(gè)連接來(lái)調(diào)用服務(wù)。連接以調(diào)用Context.bindService()方法建立,以調(diào)用Context.unbindService()關(guān)閉。多個(gè)應(yīng)用程序可以綁定至同一個(gè)服務(wù)。如果服務(wù)此時(shí)還沒有加載,Context.bindService()會(huì)先加載它??杀黄渌麘?yīng)用程序復(fù)用,比如天氣預(yù)報(bào)服務(wù),其他應(yīng)用程序不需要再寫這樣的服務(wù),調(diào)用已有的即可。在Android系統(tǒng)中,一個(gè)進(jìn)程通常不能直接訪問(wèn)其他進(jìn)程的內(nèi)存空間。如果要在不同的進(jìn)程間傳遞對(duì)象,需要把對(duì)象解析成操作系統(tǒng)能夠理解的數(shù)據(jù)格式。Android采用AIDL(接口定義語(yǔ)言)的方式實(shí)現(xiàn)。AIDL是一種接口定義語(yǔ)言,用于約束兩個(gè)進(jìn)程間的通訊規(guī)則,編譯器會(huì)生成它的代碼,從而實(shí)現(xiàn)Android設(shè)備上的兩個(gè)進(jìn)程間通信(IPC)。6.3服務(wù)小實(shí)例MsgService類是如何完成“客戶端定時(shí)與服務(wù)器進(jìn)行交互獲得最新的話題、私信以及好友的信息,并在界面中進(jìn)行提示、刷新”大等功能的?

MsgService類繼承自Service類,實(shí)現(xiàn)了其中的onCreate、onStart、onBind與onDestroy方法,同時(shí)也實(shí)現(xiàn)了接口Runnable和其中的run()方法。onCreate方法初始化Service,并獲得當(dāng)前登錄用戶的用戶名與密碼信息,為請(qǐng)求服務(wù)器的參數(shù)設(shè)置做好準(zhǔn)備。onStart方法利用Runnable開啟一個(gè)線程,運(yùn)行run方法,進(jìn)行服務(wù)器的數(shù)據(jù)請(qǐng)求,在線程中請(qǐng)求是為了防止程序內(nèi)存占用過(guò)大。onBind方法是用來(lái)綁定服務(wù),在本項(xiàng)目中不要求服務(wù)綁定

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論