如有转载,请申明:
转载至 http://blog.csdn.net/qq_35064774/article/details/52567004
Service是安卓的四大组件之一。它是一个没有界面的组件,且优先级大于后台进程。
了解它的生命周期很有必要。
Service启动的分类
启动服务: 通过startService启动的服务称为启动服务
绑定启动服务: 通过bindService启动的服务成为绑定启动服务
混个开启服务: 既开启了服务,又绑定了服务。但通常是先开启服务,然后绑定,解绑,关闭。
生命周期
对于服务来说,有两种启动方式。
start方式启动服务:
onCreate: 服务创建时调用
onStartCommand: 服务被调用开启方法时调用
onDestroy: 服务销毁时调用
当在代码中执行startService时,如果服务不存在,就会先调用onCreate,然后调用onStartCommand;而如果服务已经存在,则只会调用onStartCommand。
当在代码中执行stopService时,就会执行onDestroy。
需要注意的是,start方式开启的服务与开启者(Activity)无直接联系,也就是当应用退出后,服务还是会继续运行。
bind方式启动服务:
onCreate: 服务创建时调用
onBind: 服务被绑定时调用
onServiceConnected: 服务连接时调用。该API并不属于Service,而是属于ServiceConnection。而这个接口作为参数在绑定时传递给了Service
onUnbind: 服务被解绑时调用
onDestroy: 服务销毁时调用
这种方式的执行顺序大致就是上述顺序方式。
与start方式开始的服务不同的是,当绑定的应用退出时,服务也会停止。
混合开启服务:
onCreate: 服务创建时调用
onStartCommand: 服务被调用开启方法时调用
onBind: 服务被绑定时调用
onServiceConnected: 服务连接时调用。该API并不属于Service,而是属于ServiceConnection。而这个接口作为参数在绑定时传递给了Service
onUnbind: 服务被解绑时调用
onDestroy: 服务销毁时调用
混合开启服务一般是按照上述流程,也就是先开启服务,然后在绑定,在关闭服务之前,解绑服务。这样可以避免一些莫名的问题。
混合开启服务的好处在于,既可以实现应用退出后,仍然可以运行服务,在应用运行时,可以绑定服务,调用服务中的方法。