1. 服务是什么
服务(即Service)是Android四大组件之一,属于计算型组件,Service不依赖任何用户界面,适合运行不需要与用户交互但需要长时间在后台运行的任务。由于Service是在UI线程里执行操作的,因此耗时的后台计算建议在Service里创建单独的Thread执行。Service需要在AndroidManifest.xml中注册,也需要借助Intent启动。
了解完Service的基本概念,下面就让我们看看Service需要掌握的内容吧。包括Service的生命周期,Service的种类,以及服务都有哪些用法吧。
2. 服务的生命周期
下面让我们看下Service的生命周期图:
从上图可以看出,Service有两种不同的打开方式(启动服务、绑定服务)。在详细讲解这两种方式前,让我们先通过表格看看几个自动回调方法:
| 回调方法 | 作用 |
|---|---|
| onCreate() | 创建服务 |
| onStartCommand() | 开始服务 |
| onBind() | 绑定服务 |
| onUnbind() | 解绑服务 |
| onDestroy() | 销毁服务 |
看完表格,是不是很简单呢?那么还是来了解下Service的两种不同的打开方式吧~
启动服务
- 启动服务是由组件通过
startService()方法来启动Service,如果是第一次启动Service,则回调onCreate()->onStartCommand()(不是则只回调onStartCommand()方法)。然后Service一直运行下去,即使启动Service的组件被销毁也不受影响,直到调用了stopService()或stopSelf()方法,回调onDestroy()方法,服务被销毁。启动服务一般只执行单一操作,不会返回结果给调用方。
绑定服务
- 绑定服务则是由组件通过
bindService()方法来进行绑定Service,如果是第一次绑定Service,则回调onCreate()->onBind()(不是则只回调onBind()方法)。绑定服务提供一个客户端-服务器端的接口,此时,调用方可以获取到onBind()方法里返回的一个IBinder对象的实例,]从而达到与Service进行交互。Service会一直运行下去,直到调用了unbindService()方法,回调onUnbind()->onDestroy()方法,服务被销毁。
要接收
IBinder,客户端必须提供一个ServiceConnection实例用于监控与服务的连接,并将其传递给bindService()。当 Android 系统创建了客户端与服务之间的连接时,会回调ServiceConnection对象onServiceConnected()方法,向客户端传递用来与服务通信的IBinder,从而达到与Service进行交互。
其实Service的打开方式还有第三种:
启动且绑定服务
-
Service既可以启动服务,同时也能绑定服务。此时需要回调onStartCommand()和onBind()方法。在销毁服务时,也需要同时调用stopService()(或stopSelf())和unbindService()方法。
紧接着让我们来看下服务的类别。
3. 服务的分类
服务按照运行类型可以分为后台服务(最常见)和前台服务,按照运行地点可以分为本地服务和远程服务:
4. 服务的基本用法
4.1 服务的使用步骤
待更。