關於service相關知識的認識

        作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

     今天先寫這麼多,後續繼續寫》》》》

相關文章
相關標籤/搜索