天天看點

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()

Services的生命周期

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

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

另一種可能

如果啟動服務後綁定了服務,調用stopService()方法服務是不會停止的,隻能調用unbindService()解綁,解綁後服務就會停止

Service的使用:http://blog.csdn.net/wu_wxc/article/details/51377512

認真看完也就能掌握Service了