android服務類 Service

                當只使用startService()來啓動服務spa

startService能夠屢次調用,stopService()也能夠屢次調用。生命週期

總結:::startService第一次調用的時候,Service的生命週期方法事件

       onCreate()---->onStartCommand()會執行。再次並屢次調用startService會使Service的        生命週期方法onStartCommand()屢次執行,onCreate()方法不執行了。service

總結:::調用stopService()是若是Service已經啓動,Service的生命周 期方法 onDestroy()會                                  執行。再次並屢次調用沒有任何反應不回調生命週期方法了。能夠屢次調用(不崩潰)下載

 

  

Service 中的onStartCommand()必須返回一個整數.這個整數描述了在系統殺死它的事件中系統如何繼續這個服務onStartCommand()也返回值必須是下面常量之一:方法

  • START_NOT_STICKY總結

      若是系統在onStartCommand()返回後殺死了服務,不要從新建立這個service,除非還有掛起的intent須要被傳送.這是避免在沒必要要時運行你的service和當你的應用能夠簡單重啓任何未竟的工做時的最佳選擇.top

  • START_STICKY    若是強制退出了  那麼他會使用一個null 的intent  請注意文件

      若是系統在onStartCommand()返回後殺死了這個service,會從新建立這個service而且調用onStartCommand(),可是再也不從新發送上次最後一個intent,而是使用一個nullintent調用onStartCommand(),除非有一些掛起的intent,在此狀況下,這些掛起的intent被派送.這適合於媒體播放器(or或類似也的服務),它不執行命令,可是無限期的運行並等待一個工做.vi

  • START_REDELIVER_INTENT

      若是系統在onStartCommand()返回後殺死了service,從新建立這個service而且使用上次最後一個intent調用onStartCommand().任何掛起的intent都順序地被派送.這適合於活躍地執行一個工做而且應被當即恢復的服務,好比下載一個文件

 

                當只使用bindservice()來啓動服務

 

bindservice()方法能夠屢次調用,unbindService()方法不能夠屢次調用(應用會崩潰)。

總結:::bindService()而且《bindService()方法第三個參數

      是Context.BIND_AUTO_CREATE》 的時候,第一次調用bindService()方法       Service生命週期方法

      onCreate()-->onBind()執行,再次並屢次調用生命週期方法不回調。

 

 

總結:::bindService()而且《bindService()方法第三個參數

      不是Context.BIND_AUTO_CREATE》的時候,第一次(再次屢次)調用bindService()方       法Servic生命週期方法都不會回調。(由於這個時候服務沒有啓動)


 

總結:::unbindService()方法若是調用了,Service必須註冊了(即調用過bindService方        法),service生命週期的onUnbind()-->onDestroy()。若是沒有註冊過那麼調用     unbindService()會崩潰。因此不能再次並屢次調用unbindService()。

 

 

 

 

 

 

 

 

 

       同時使用了 startService()bindService()而且《bindService()方法第三個參數                                                是Context.BIND_AUTO_CREATE》。

狀況1:::若是咱們只調用stopService(),不會回調任何生命週期方法。只有咱們再次調                                                 用unbindService()纔會執行ervice的生命週期的ubind()和onDestroy()方法。

狀況2:::若是先調用unbindService()方法會先執行Service的生命週期的ubind(),而後再調                                               用stopService()方法就會執行Service的生命週期的onDestroy()方法。

總結:::在Context.BIND_AUTO_CREATE模式下同時使用了 startService()和bindService(),想要                                   徹底退出Service必須調用stopService()和unbindService()兩個方法。

 

          

          

      同時使用了 startService()bindService()而且《bindService()方法第三個參數

                            不是Context.BIND_AUTO_CREATE》。

狀況1:::若是咱們只調用stopService(),那就會執行Service的生命週期的unbind()和onDestroy()                                 方法(能夠沒必要調用unbindService())。

狀況2:::若是先調用unbindService()方法會先執行Service的生命週期的ubind(),若是再調                                               用stopService()方法就會執行Service的生命週期的onDestroy()方法。

總結:::不在Context.BIND_AUTO_CREATE模式下,同時使用了 startService()和bindService()                                        能夠只調用stopService()方法來徹底退出Service。

相關文章
相關標籤/搜索