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事件时间几毫秒内,有知道的请告知,谢谢。
在这里插入图片描述

发布了45 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u010436867/article/details/82750261