轉載請標明出處: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了