Android:四大组件之Service生命周期详解

前言

  • Service作为Android四大组件之一,应用十分广泛
  • 本文介绍Service基础知识:生命周期

目录

Android:四大组件之Service生命周期详解

1 生命周期 (官方说明)

Android:四大组件之Service生命周期详解

Service的生命周期中,常用的方法有:

1.1 4个手动调用的方法

手动调用方法 作用
startService() 启动服务
stopService() 停止服务
bindService() 绑定服务
unBindService() 解绑服务

1.2 5个内部调用的方法

内部调用的方法 作用
onCreate() 创建服务
onStartCommand() 开启服务
onDestroy() 销毁服务
onBind() 绑定服务
onUnbind() 解绑服务

2 生命周期详细说明

2.1 方法:startService()  --启动Service服务

      自动调用的方法:onCreate(),onStartCommand()

      示意图

Android:四大组件之Service生命周期详解

说明:

  • 若一个Service被startService()多次启动,那么onCreate()也只会调用一次;
  • 整个生命周期的方法,除了onStartCommand()可以多次调用,其他生命周期方法只能调用一次;
  • onStartCommand()调用次数 = startService()调用次数;
  • onStartCommand()必须返回一个整数 = 描述系统在杀死服务后应该如何继续运行:

        a)START_NOT_STICKY:

        b)START_STICKY:

        c)START_REDELIVER_INTENT:

2.2 stopService() -- 关闭Service服务

      自动调用的方法:onDestroy()

      示意图

Android:四大组件之Service生命周期详解

说明:启动 & 绑定一个service,若在无解绑的前提下调用onStopService()方法是无法停止一个服务的.

2.3 bindService() -- 绑定Service服务

      自定调用的方法: onCreate(),onBind()

      示意图

   Android:四大组件之Service生命周期详解

2.4 unBindService() -- 解绑Service

      自动调用方法:onUnbind(),onDestroy()

      示意图

Android:四大组件之Service生命周期详解

3 常见的生命周期使用

3.1 只使用startService()启动服务

Android:四大组件之Service生命周期详解

说明:

  1. 若一个Service被startService()多次启动,那么onCreate()也只会调用一次,即Service实例只有1个
  2. 整个生命周期方法里,只有onStartCommand()可多次调用,其他只能调用一次
  3. onStartCommand()调用次数 = startService()调用次数

3.2 只使用bindService()启动服务

Android:四大组件之Service生命周期详解

说明:

  1. 客户端通过一个IBinder接口与服务进行通信
  2. 若一个Service被BindService()多次启动,那么onCreate()也只会调用一次,即Service只有一个实例
  3. 多个客户端可绑定到同一个服务上,当所有客户端都解绑后,系统会销毁服务(服务不需手动终止)

3.3 先启动服务(startService()),再绑定服务(bindService())

Android:四大组件之Service生命周期详解

Android:四大组件之Service生命周期详解

4 总结

本篇文章详细描述了Service的生命周期的方法.