Service 生命周期(理论)
看了好几篇文章,总结了一下Service的生命周期 图片来源
Service生命周期分为 :
1、手动调用 2、内部自动调用
之前我一直不清楚为什么有两种生命周期 其他像Activity,Fragment之类的都是整整齐齐的一排 后来看了这个图才懂
手动调用生命周期 系统会自动调用对应的生命周期 两者是一起的。。。。
手动调用生命周期又分为两种
startService 启动服务 ,bindService 绑定服务,
两个也可以一起用 合起来就是 启动+绑定。。。
startService和bindService的区别:
startService启动服务:
-
onStartCommand()方法一旦执行,如果不调用stopService就会一直在后台运行(或stopSelf方法),当然如果系统资源不足,android系统也可能结束服务。
-
startService可以执行无数次,关闭服务时手动调用一次stopSeervice就可以了
-
只能开启&关闭Service ,无法操作
bindService绑定服务:
-
绑定之后如果绑定的组件都被干掉了(如:finish())就会自动调用onDestroy方法销毁服务,
-
当然 手动调用unbindService方法也可以解绑 因为可以多绑定 所以只有全部解绑后才会自动销毁
-
手机横竖屏切换也好锁屏也好只要切换时绑定的activity执行了onDestroy方法就会断开服务 绑定的服务全部断开也会自动销毁
-
除了绑定Service,还能操作Service
说不上是共同点 就是写一些其暂时不知道怎么分类的知识:
-
onCreate()方法只会执行一次
-
两者一起调用时需要既手动调用unbind全部解绑又要手动调用stopService才可以关闭服务
-
服务销毁的原则是其上没有一个绑定者,并且处于停止状态,这样才会调用onDestory。