1. 程式人生 > >Services的生命週期

Services的生命週期

轉載請標明出處:http://blog.csdn.net/wu_wxc/article/details/51366772
本文出自【吳孝城的CSDN部落格】

Android的四大元件之一:Services
官網介紹:http://developer.android.com/guide/components/services.html
Service是Android的一個程式元件,執行在後臺且不提供使用者介面,能被其他應用程式啟動,必須在AndroidManifest.xml裡宣告
Service執行在程式所在程序的主執行緒(UI執行緒)中,如果要執行一些很耗CPU的工作或者一些阻塞操作,應建立一個子執行緒來執行

Service的啟動方式有兩種:Started和Bound

Started:非繫結服務
通過startService()啟動,Service經歷了:onCreate() –> onStartCommand()
這時Service處於執行狀態,其中onStartCommand()可以執行多次
通過stopService()停止,Service經歷了:onDestroy()
這裡Service停止

Bound:繫結服務
呼叫bindService()方法,Service會執行onCreate() –> onBind(),這時呼叫者和Service繫結在一起,onBind()只能繫結一次
當完成操作時,呼叫unbindService()方法解除繫結,解除繫結後系統會銷燬這個服務
呼叫者退出,Service就會呼叫onUnbind() –> onDestroy()銷燬服務

當其他元件要通過bindService()來繫結服務時,系統會回撥onBind()方法,在onBind()中必須返回IBinder來返回一個介面,客戶端通過它來與伺服器通訊,如果不想被繫結,就返回null。

總結下Service的生命週期
呼叫startService()的生命週期為:onCreate() –> onStartCommand() –> onDestroy()
呼叫bindService()的生命週期為:onCreate() –> onBind()–> onUnbind() –> onDestroy()
這裡寫圖片描述

startService()啟動的服務在啟動服務的元件退出時服務還在,可通過stopSelf()或stopSelfResult自己停止,或由其他元件呼叫stopService()來終止

bindService()啟動的服務在啟動服務的元件退出時服務也會停止,解除繫結服務也會停止

另一種可能
如果啟動服務後綁定了服務,呼叫stopService()方法服務是不會停止的,只能呼叫unbindService()解綁,解綁後服務就會停止


Service的使用:http://blog.csdn.net/wu_wxc/article/details/51377512
認真看完也就能掌握Service了