啟動方式
A started service
被開啟的service通過其他組件調用startService()被創建。
這種service可以無限地運行下去,必須調用stopSelf()方法或者其他組件調用stopService()方法來停止它。
當service被停止時,系統會銷毀它。
A bound service
被綁定的service是當其他組件(一個客戶)調用bindService()來創建的。
客戶可以通過一個IBinder接口和service進行通信。
客戶可以通過unbindService()方法來關閉這種連線。
一個service可以同時和多個客戶綁定,當多個客戶都解除綁定之後,系統會銷毀service。
The entire lifetime
service整體的生命時間是從onCreate()被調用開始,到onDestroy()方法返回為止。
和activity一樣,service在onCreate()中進行它的初始化工作,在onDestroy()中釋放殘留的資源。
比如,一個音樂播放service可以在onCreate()中創建播放音樂的執行緒,在onDestory()中停止這個執行緒。
onCreate()和onDestroy()會被所有的service調用,不論service是通過startService()還是bindService()建立。
The active lifetime
service積極活動的生命時間(active lifetime)是從onStartCommand()或onBind()被調用開始,它們各自處理由startService()或bindService()方法傳過來的Intent對象。
如果service是被開啟的,那么它的活動生命周期和整個生命周期一同結束。
如果service是被綁定的,它們它的活動生命周期是在onUnbind()方法返回後結束。