一、什么是Service
Service(服务)--Android四大组件之一。
Service是Android中实现程序后台运行的解决方案,它非常适用于去执行那些不需要和用户交互而且还要求长期运行的任务。Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执行耗时的操作,除非你在Service中创建了子线程来完成耗时操作。
Service的运行不依赖于任何用户界面,即使程序被切换到后台或者用户打开另一个应用程序,Service仍然能够保持正常运行,这也正是Service的使用场景。当某个应用程序进程被杀掉时,所有依赖于该进程的Service也会停止运行
二、 Service分类
1.分类
图片转自:https://blog.csdn.net/carson_ho/article/details/53160231
2.特点
3.本地Service
3.1两种启动方式
(1)startService()方法开启Service
- 定义一个类并继承Service。
- 在AndroidManifest.xml文件中配置该Service。
- 使用Context的startService(Intent)方法启动该Service。
- 不再使用该Service时,调用Context的stopService(Intent)方法停止该Service。
(2)bindService方法开启Service
- 定义一个类并继承Service。并在类中创建一个实现Binder接口的实现实例对象并提供公共方法给Activity调用。
- 从onBind()回调方法返回此Binder实例。
- Activity中继承ServiceConnection接口,从onServiceConnected回调方法接收Binder实例,使用此Binder实例来调用Service提供给Activity的公共方法。
- 调用bindService(intent)来绑定Service后,便会执行onServiceConnected回调方法。
- unbindService()来解除绑定Service.
3.2 Service的生命周期
- 启动服务-onCreate()-onStartCommand()-服务运行-onDestory()-服务被销毁
- 绑定服务-onCreate()-onBind()-服务运行-onUnBind()-onDestory()-服务被销毁
关于Service:
- 被启动的服务的生命周期:如果一个Service被某个Activity 调用 Context.startService 方法启动,那么不管是否有Activity使用bindService绑定或unbindService解除绑定到该Service,该Service都在后台运行。如果一个Service被startService 方法多次启动,那么onCreate方法只会调用一次,onStart将会被调用多次(对应调用startService的次数),并且系统只会创建Service的一个实例(因此你应该知道只需要一次stopService调用)。该Service将会一直在后台运行,而不管对应程序的Activity是否在运行,直到被调用s