前面我们介绍了Activity的一些基本知识。今天再来学习下Android中另外一个十分重要的知识点Service。
Service通常称为后台服务,后台区别与前台,不依赖与用户UI而存在。所以Service的应用场景应具备以下条件:
- 不依赖与可见UI(并不绝对,比如Notification和Service结合使用)
- 长时间运行
一. 生命周期及常用的方法
下面是官方给出的Service生命周期图:
Service的启动方式不同,生命周期也不同。从上图可以看出:
- startService方式启动: onCreate() ——> onStartCommand() ——> onDestroy()
- bindService方式启动: onCreate() ——> onBind() ——> onUnbind() ——> onDestroy()
在Service中,常用的方法:
4个需要主动调用的方法
| 主动调用方法 | 作用 |
|---|---|
| startService() | 启动服务 |
| stopService | 关闭服务 |
| bindService | 绑定服务 |
| unBindService | 解绑服务 |
5个被动调用的方法
| 自动调用方法 | 作用 |
|---|---|
| onCreate | 创建服务 |
| onStartCommand() | 开始服务 |
| onDestroy() | 销毁服务 |
| onBind | 绑定服务 |
| onUnbind | 解绑服务 |
二. 生命周期方法具体的介绍
-
startService
作用:启动服务
自动调用方法:onCreate、onStartCommand -
stopService
作用:关闭服务
自动调用方法:onDestroy -
bingService
作用:绑定服务
自动调用方法:onCreate()、onBind() -
unBindService
作用:解绑Service
自动调用方法:onUnbind()、onDestroy()
三. 常见的应用场景对应的生命周期
| 应用场景 | 生命周期 |
|---|---|
| 只使用startServcie | [代码调用startService] ---->onCreate[创建] ——> onStartCommand[开始] ----->[Service运行中]---->[手动调用StopService]---->onDestroy[销毁]---->[Service停止] |
| 只使用bindService | [代码调用bindService]---->onCreate[创建] ——> onBind[绑定]---->[Service绑定开始运行]---->[外界请求解绑unBindService]---->onUnbind[解除绑定]——>onDestroy[销毁]---->[Service停止] |
| 先startService然后bindService | [代码调用startService]---->onCreate[创建]——>onStartCommand[开始]---->[Servcie运行中]---->[外界请求绑定Service]---->onBind[绑定]---->[Service绑定]---->[Service绑定运行中]---->[外界请求解绑unBindService]---->onUnbind[解除绑定]---->[外界请求停止StopService]---->onDestroy[销毁i]—>[服务停止] |
| 注意事项 | startService和stopService只能开启和停止Service,无法和Service进行其他交互;bindService和unBindService除了绑定和解除外还可以与Service进行交互;startService开启后,调用者退出后,Service仍在运行;BindService开启后,调用者退出后,Service也停止了 |