Service的生命週期onStartCommand開啓兩次

1.先記錄一下使用的場景:

App裏面有個Service 裏面封裝了Socket,用來接收服務器推送信息,其onStartCommand的模式是START_STICKY(保活),用的Socket框架mina,自己封裝了。服務的開啓放在了application中。

2.運行情況

  • 在正常起開Socket的時候onStartCommand只走一次。

  • 當呼出多任務滑動殺死APP後,則APP後臺還會重啓,因爲我前面說過的設置了保活策略模式(有待檢測其有效性),就會導致onStartCommand的生命週期走兩次,其中在殺死的時候並沒有走onDestroy。

3.模擬情況

新建立了個Service 的Demo 並沒有mina Socket框架,同樣的情況,均按照正常的生命週期執行。

分析,由於在Service中使用了Socket,使得在殺死APP的時候並沒有使得Socket徹底殺死,因爲沒有onDestroy方法,確定的是走了APPlication中的開啓服務的方法,這樣會走一次onStartCommand,但是走了兩次實在是想不通。

1.第一次正常啓動:

服務的生命週期方法:onStartCommand---22874-22874

2.呼出多任務後滑動APP結束任務:

重啓後的進程PID 一樣

服務的生命週期方法:onStartCommand---23094-23094

服務的生命週期方法:onStartCommand---23094-23094

兩次的onStartCommand事件時間幾毫秒內,有知道的請告知,謝謝。
在這裏插入圖片描述

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