android service

Service是android 系統中的一種組件,它跟Activity的級別差不多,但是他不能自己運行,只能後臺運行,並且可以和其他組件進行交互。Service的啓動有兩種方式:context.startService() context.bindService()。

一.使用context.startService() 啓動Service時會經歷:
context.startService() ->onCreate()- >onStart()->Service running
context.stopService() | ->onDestroy() ->Service stop
如果Service還沒有運行,則android先調用onCreate()然後調用onStart();如果Service已經運行,則只調用onStart(),所以一個Service的onStart方法可能會重複調用多次。

stopService的時候直接onDestroy,如果是調用者自己直接退出而沒有調用stopService的話,Service會一直在後臺運行。該Service的調用者再啓動起來後可以通過stopService關閉Service。

所以調用startService的生命週期爲:onCreate --> onStart(可多次調用) --> onDestroy

二.使用使用context.bindService()啓動Service時會經歷:
context.bindService()->onCreate()->onBind()->Service running
onUnbind() -> onDestroy() ->Service stop

nBind將返回給客戶端一個IBind接口實例,IBind允許客戶端回調服務的方法,比如得到Service運行的狀態或其他操作。這個時候把調用者(Context,例如Activity)會和Service綁定在一起,Context退出了,Srevice就會調用onUnbind->onDestroy相應退出。

所以調用bindService的生命週期爲:onCreate --> onBind(只一次,不可多次綁定) --> onUnbind --> onDestory。

在Service每一次的開啓關閉過程中,只有onStart可被多次調用(通過多次startService調用),其他onCreate,onBind,onUnbind,onDestory在一個生命週期中只能被調用一次。

三.Service的使用場景:

1.多媒體後臺播放(播放音樂);

2.檢測SD卡的變化;

3.記錄地理位置信息;

4.後臺下載等等。


參考:

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1024/473.html

發佈了37 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章