Service的兩種啟動方式及其之間的區別
作為Android四大組價之一的Service,可以在很多場合中進行應用。比如當在播放音訊的時候使用者啟動了其他Activity,這個時候程式要在後臺繼續播放,比如檢測SD卡上檔案的變化,或者在後臺記錄使用者地理位置資訊的變化等等。開啟Service主要有兩種方式。
(1)startService();此種開啟方式Service會經歷onCreate()--onStart()。若Service還沒執行,則先呼叫onCreate(),然後呼叫onStart();如果Service已經啟動,則只會呼叫onStart()。一個Service的onStart()方法可以被呼叫多次。stopService的時候直接onDestroy,如果是呼叫者自己直接退出而沒有呼叫stopService的話,Service會一直在後臺執行。
注:多次呼叫startService()方法並不會巢狀,所以無論同一個服務被啟動了多少次,一旦呼叫stopService()或者sopSelf(),他都會立刻停止。
(2)bindService():此種啟動方式Service會經歷onCreate()--onBind(),onBind將會返回給客戶端一個IBind介面例項,IBind允許客戶端回撥服務的方法,比如得到Service的執行狀態等。這個時候呼叫者會和Service繫結在一起,呼叫者退出的時候,Service就會呼叫onUnbind--onDestroy退出。