前面我们介绍了Activity的一些基本知识。今天再来学习下Android中另外一个十分重要的知识点Service。
Service通常称为后台服务,后台区别与前台,不依赖与用户UI而存在。所以Service的应用场景应具备以下条件:

  1. 不依赖与可见UI(并不绝对,比如Notification和Service结合使用)
  2. 长时间运行

一. 生命周期及常用的方法

下面是官方给出的Service生命周期图:

android mvi 生命周期_调用方法


Service的启动方式不同,生命周期也不同。从上图可以看出:

  1. startService方式启动: onCreate() ——> onStartCommand() ——> onDestroy()
  2. bindService方式启动: onCreate() ——> onBind() ——> onUnbind() ——> onDestroy()

在Service中,常用的方法:

4个需要主动调用的方法

主动调用方法

作用

startService()

启动服务

stopService

关闭服务

bindService

绑定服务

unBindService

解绑服务

5个被动调用的方法

自动调用方法

作用

onCreate

创建服务

onStartCommand()

开始服务

onDestroy()

销毁服务

onBind

绑定服务

onUnbind

解绑服务

二. 生命周期方法具体的介绍

  1. startService
    作用:启动服务
    自动调用方法:onCreate、onStartCommand
  2. android mvi 生命周期_调用方法_02

  3. stopService
    作用:关闭服务
    自动调用方法:onDestroy
  4. android mvi 生命周期_Service_03

  5. bingService
    作用:绑定服务
    自动调用方法:onCreate()、onBind()
  6. android mvi 生命周期_调用方法_04

  7. unBindService
    作用:解绑Service
    自动调用方法:onUnbind()、onDestroy()
  8. android mvi 生命周期_Service_05

三. 常见的应用场景对应的生命周期

应用场景

生命周期

只使用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也停止了