前言
- 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()启动服务
说明:
- 若一个Service被startService()多次启动,那么onCreate()也只会调用一次,即Service实例只有1个
- 整个生命周期方法里,只有onStartCommand()可多次调用,其他只能调用一次
- onStartCommand()调用次数 = startService()调用次数
3.2 只使用bindService()启动服务
说明:
- 客户端通过一个IBinder接口与服务进行通信
- 若一个Service被BindService()多次启动,那么onCreate()也只会调用一次,即Service只有一个实例
- 多个客户端可绑定到同一个服务上,当所有客户端都解绑后,系统会销毁服务(服务不需手动终止)
3.3 先启动服务(startService()),再绑定服务(bindService())
4 总结
本篇文章详细描述了Service的生命周期的方法.