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事件時間幾毫秒內,有知道的請告知,謝謝。