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

前言

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

目录

1 生命周期 (官方说明)

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

1.1 4个手动调用的方法

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

1.2 5个内部调用的方法

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

2 生命周期详细说明

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

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

      示意图

说明:

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

        a)START_NOT_STICKY:

        b)START_STICKY:

        c)START_REDELIVER_INTENT:

2.2 stopService() -- 关闭Service服务

      自动调用的方法:onDestroy()

      示意图

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

2.3 bindService() -- 绑定Service服务

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

      示意图

  

2.4 unBindService() -- 解绑Service

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

      示意图

3 常见的生命周期使用

3.1 只使用startService()启动服务

说明:

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

3.2 只使用bindService()启动服务

说明:

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

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

4 总结

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值