Java_Service詳解.ppt

Java_Service詳解.ppt

ID:48773900

大?。?70.00 KB

頁數(shù):23頁

時間:2020-01-23

Java_Service詳解.ppt_第1頁
Java_Service詳解.ppt_第2頁
Java_Service詳解.ppt_第3頁
Java_Service詳解.ppt_第4頁
Java_Service詳解.ppt_第5頁
資源描述:

《Java_Service詳解.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、Android應(yīng)用開發(fā)06Java_ServiceService簡介Service的啟動生命周期BinderAIDL實現(xiàn)接口時的幾個原則IPC的調(diào)用步驟2服務(wù)是運行在后臺的一段代碼。它可以運行在它自己的進程,也可以運行在其他應(yīng)用程序進程的上下文(context)里面,這取決于自身的需要。其它的組件可以綁定到一個服務(wù)(Service)上面,通過遠程過程調(diào)用(RPC)來調(diào)用這個方法。例如媒體播放器的服務(wù),當用戶退出媒體選擇用戶界面,仍然希望音樂依然可以繼續(xù)播放,這時就是由服務(wù)(service)來保證當用戶界面

2、關(guān)閉時音樂繼續(xù)播放的。它跟Activity的級別差不多,但是它不能自己運行,需要通過某一個Activity或者其他Context對象來調(diào)用。Service簡介3Service有兩種啟動方式:1.第一種是通過調(diào)用Context.startService()啟動,調(diào)用Context.stopService()結(jié)束,startService()可以傳遞參數(shù)給Service。2.第二種方式是通過調(diào)用Context.bindService()啟動,調(diào)用Context.unbindservice()結(jié)束,還可以通過S

3、erviceConnection訪問Service。二者可以混合使用,比如說我可以先startService再bindService。Service的啟動Service由Activity啟動,但是并不依賴于Activity,即當Activity生命周期結(jié)束時,Service仍然會繼續(xù)運行。startService后,即使調(diào)用startService的進程結(jié)束了,Service仍然還存在,直到有進程調(diào)用stopService,或者Service自己自殺(stopSelf())。bindService后,Se

4、rvice就和調(diào)用bindService的進程同生共死了,也就是說當調(diào)用bindService的進程死了,那么它bind的Service也要跟著被結(jié)束,當然期間也可以調(diào)用unbindservice讓Service結(jié)束。兩種方式混合使用時,比如說你startService了,我bindService了,那么只有你stopService了而且也unbindservice了,這個Service才會被結(jié)束。生命周期Android系統(tǒng)將會嘗試保留那些啟動了的或者是綁定了服務(wù)的進程。如果該服務(wù)正在進程的onCreat

5、e(),onStart(),或者onDestroy()這些方法中執(zhí)行時,那么主進程將會成為一個前臺進程,以確保此代碼不會被停止。如果服務(wù)已經(jīng)開始,那么它的主進程會就重要性而言低于所有可見的進程但高于不可見的進程,由于只有少數(shù)幾個進程是用戶可見的,所以只要不是內(nèi)存特別低,該服務(wù)不會停止.。如果有多個客戶端綁定了服務(wù),只要客戶端中的一個對于用戶是可見的,即認為該服務(wù)可見。如果Service還沒有運行,則android先調(diào)用onCreate()然后調(diào)用onStart();如果Service已經(jīng)運行,則只調(diào)用on

6、Start(),所以一個Service的onStart方法可能會重復調(diào)用多次。生命周期stopService的時候直接onDestroy,如果是調(diào)用者自己直接退出而沒有調(diào)用stopService的話,Service會一直在后臺運行。該Service的調(diào)用者再啟動起來后可以通過stopService關(guān)閉Service。所以調(diào)用startService的生命周期為:onCreate-->onStart(可多次調(diào)用)-->onDestroy使用context.bindService()啟動Service會經(jīng)歷:

7、context.bindService()->onCreate()->onBind()->ServicerunningonUnbind()->onDestroy()->Servicestop生命周期onBind將返回給客戶端一個IBind接口實例,IBind允許客戶端回調(diào)服務(wù)的方法,比如得到Service運行的狀態(tài)或其他操作。這個時候把調(diào)用者(Context,例如Activity)會和Service綁定在一起,Context退出了,Srevice就會調(diào)用onUnbind->onDestroy相應(yīng)退出。所以

8、調(diào)用bindService的生命周期為:onCreate-->onBind(只一次,不可多次綁定)-->onUnbind-->onDestory。所以,在Service每一次的開啟關(guān)閉過程中,只有onStart可被多次調(diào)用(通過多次startService調(diào)用),其他onCreate,onBind,onUnbind,onDestory在一個生命周期中只能被調(diào)用一次。生命周期Android對進程間通信實現(xiàn)了一套輕量級的IPC機制

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。