作android的程序開發也有了許久了,當作一個大程序的時候,愈來愈發現service是很是有用的方法,當你想後臺運行數據或者音樂播放操做的時候,均可以纔有service,根據實際狀況,寫成local service仍是remote service,來幫助整個應用更加穩定。android
網上關於service的文章不少,我本身在用的時候也在最初有不少不解,我在這裏看成本身的只是備份。spa
一、何時會調用OnDestroy()呢?.net
最初我是直接鏈接adb,把我運行起來的service 殺掉,可是我發現他不會進入OnDestroy(),最後發現,只有調用了stopService()或者調用了stopSelf()的時候,纔會觸發起OnDestroy,也就是若是咱們的service指針
由於程序邏輯或者變量空指針異常等掛掉時候,是不會調用OnDestroy()。對象
二、程序裏什麼都沒有設置,可是service被本身kill掉後,爲何又能夠看到本身啓動起來了?blog
那是由於,Service在被啓動起來後,在執行onStartCommand的時候,flags爲START_STICKY_COMPATIBILITY,就是說Service在被kill後,是有可能會被從新啓動的,這樣的返回值一共有四個,分別爲進程
START_STICKY 若是service進程被kill掉,保留service的狀態爲開始狀態,但不保留遞送的intent對象。開發
START_NOT_STICKY service被異常kill掉,系統不會自動重啓該服務。rem
START_REDELIVER_INTENT 若是service進程被kill掉,系統會自動重啓該服務,並將Intent的值傳入。get
START_STICKY_COMPATIBILITY 和START_STICKY 差很少,可是不保證服務被kill後必定能重啓。
我在網上看了這個資料,能夠幫助深刻了解一些這幾個返回值http://blog.csdn.net/veryitman/article/details/7600008
今天先寫這麼多,後續繼續寫》》》》