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