先来看一下service 的生命周期的架构:
1.为神魔要有两种生命周期呢?
那是因为 手动调用生命周期 系统会自动调用对应的生命周期 ,两者是一起的。
相信还有很多小伙伴不太明白,下来我们来看一下这张图,
手动调用生命周期又分为{ startService 启动服务 ,bindService 绑定服务 这两种}
startService和bindService的区别:
startService启动服务:
onStartCommand()方法一旦执行,如果不调用stopService就会一直在后台运行(或stopSelf方法),当然如果系统资源不足,android系统也可能结束服务。
startService可以执行无数次,关闭服务时手动调用一次stopService就可以了
只能开启&关闭Service ,无法操作
bindService绑定服务:
绑定之后如果绑定的组件都被干掉了(如:finish())就会自动调用onDestroy方法销毁服务,
当然 手动调用unbindService方法也可以解绑 因为可以多绑定 所以只有全部解绑后才会自动销毁
手机横竖屏切换也好锁屏也好只要切换时绑定的activity执行了onDestroy方法就会断开服务 绑定的服务全部断开也会自动销毁
除了绑定Service,还能操作Service
注意:
onCreate()方法只会执行一次
两者一起调用时需要既手动调用unbind全部解绑又要手动调用stopService才可以关闭服务
服务销毁的原则是其上没有一个绑定者,并且处于停止状态,这样才会调用onDestory。