简述
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);