前面我们介绍了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也停止了 |