service是Android中实现程序后台运行的解决方案,非常适合用于去执行哪些不需要和用户交互而且还要求长期运行的任务。
生命周期
手动调用的方法:
startService() | 启动服务 |
stopService() | 关闭服务 |
bindService() | 绑定服务 |
unbindService() | 解绑服务 |
自动调用的方法:
onCreat() | 创建服务 |
onStartConmmand | 开始服务 |
onDestroy() | 销毁服务 |
onBind() | 绑定服务 |
onUnbind() | 解绑服务 |
常见场景的生命周期路径
1.启动Service服务:
单次:startService() —> onCreate() —> onStartCommand()
多次:startService() —> onCreate() —> onStartCommand() —> onStartCommand()
2.停止Service服务:stopService() —> onDestroy()
3.绑定Service服务:bindService() —> onCreate() —> onBind()
4.解绑Service服务:unbindService() —> onUnbind() —> onDestroy()
5.启动绑定Service服务: startService() —> onCreate() —> onStartCommand() —> bindService() —> onBind()
6.解绑停止Service服务: unbindService() —> onUnbind() —> stopService() —> onDestroy()
7.解绑绑定Service服务: unbindService() —> onUnbind(ture) —> bindService() —> onRebind()
started服务和bind服务的区别:
1.通过started方式的服务会一直运行在后台,需要由组件本身或外部组件来停止服务才会以结束运行;bind方式的服务,生命周期就要依赖绑定的组件。
2.started服务可以给启动的服务对象传递参数,但无法获取服务中方法的返回值;bind服务可以给启动的服务对象传递参数,也可以通过绑定的业务对象获取返回结果。
3.当手机屏幕切换时,started服务不会停止,bind服务会随着Activity的重构而停止。