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了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章