簡介
Service是Android 四大組件之一,它跟Activity的級別差不多,但是他不能自己運行,只能後台運行,並且可以和其他組件進行交互。
Service的啟動有兩種方式:context.startService()和context.bindService()。
1.使用context.startService()啟動Service
生命周期:
context.startService() ->onCreate()- >onStart()->Servicerunning->context.stopService()
onDestroy() ->Service stop
如果Service還沒有運行,則android先調用onCreate()然後調用onStart();如果Service已經運行,則只調用onStart(),所以一個Service的onStart方法可能會重復調用多次。
stopService的時候直接onDestroy,如果是調用者自己直接退出而沒有調用stopService的話,Service會一直在後台運行。該Service的調用者再啟動起來後可以通過stopService關閉Service。
所以調用startService的生命周期為:onCreate --> onStart(可多次調用) --> onDestroy
2.使用context.bindService()啟動Service
context.bindService()->onCreate()->onBind()->Service running
onUnbind() ->onDestroy() ->Servicestop
onBind將返回給客戶端一個IBind接口實例,IBind允許客戶端回調服務的方法,比如得到Service運行的狀態或其他操作。這個時候把調用者(Context,例如Activity)會和Service綁定在一起,Context退出了,Srevice就會調用onUnbind->onDestroy相應退出。service可以在和多場合的應用中使用,比如播放多媒體的時候用戶啟動了其他Activity這個時候程序要在後台繼續播放,比如檢測SD卡上文件的變化,再或者在後台記錄你地理信息位置的改變等等。
下面是一個實際的例子:
這個例子有四個類:
其中和Service有關的是PlayMusicActivit.java和MusicService.java
PlayMusicActivit是一個啟動界面上面有四個按鈕分別來啟動、暫停、停止和關閉Service
MusicService是一個實際的Service類
另外連個類是用來做通知的,將在通知裡面講解