Service三种启动流程

简述

1.service的生命周期

另外还有两个不经常用到的:

onRebind:重新bind,先startservice,在bindservice,在unbind,在bind的时候会回调

onTimeout:即将超时,一般要求我们去stop掉对应的service,具体逻辑可以参考:Service相关ANR

2.Service 的 onStartCommand 方法有几种返回值

flag

含义

START_STICKY_COMPATIBILITY

重启后只执行onCreate

START_STICKY

重传 Intent。使用这个返回值时,如果在执行完 onStartCommand 后,服务被异 常 kill 掉,系统会自动重启该服务 ,并且onStartCommand方法会执行,onStartCommand方法中的intent值为null。 适用于媒体播放器或类似服务。

START_NOT_STICKY

在执行完 onStartCommand 后,服务被异常 kill 掉,系统不会自动重启该服

START_REDELIVER_INTEN

使用这个返回值时,服务被异 常 kill 掉,系统会自动重启该服务,并将 Intent 的值传入。 适用于主动执行应该立即恢复的作业(例如下载文件)的服务

具体原理参考:Restart Service

3.foregroundServiceType

具体参考:android U 要求前台服务类型

特殊值 含义
FOREGROUND_SERVICE_TYPE_MANIFEST 特殊值,表示使用所有的类型
FOREGROUND_SERVICE_TYPE_NONE manifest没指定时,前台服务的默认类型
FOREGROUND_SERVICE_TYPE_DATA_SYNC 对应R.attr.foregroundServiceType属性中数据同步的常量。用于数据(照片,文件,帐户)上传/下载,备份/恢复,导入/导出,获取,通过网络在设备和云之间传输等场景
FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK 对应R.attr.foregroundServiceType属性中媒体播放的常量。用于音乐,视频,新闻或其他媒体播放等场景
FOREGROUND_SERVICE_TYPE_PHONE_CALL 对应R.attr.foregroundServiceType属性中电话呼叫的常量。用于正在进行的电话或视频会议的场景
FOREGROUND_SERVICE_TYPE_LOCATION 对应R.attr.foregroundServiceType属性中定位的常量。用于GPS,地图,导航位置更新等场景

FOREGROUND_SER

VICE_TYPE_CONNECTED_DEVICE

对应R.attr.foregroundServiceType里面设备连接的

常量。用于Auto(指的应该是为汽车服务的Android Auto)、蓝牙、电视或者其他设备连接、监控和交互等场景

start方式启动和关闭流程

Intent intent = new Intent(this, TestService.class);
startService(intent);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值