定义: 服务, 是 Android 四大组件之一, 属于计算型组件
作用: 提供 需在后台长期运行的服务
生命周期:
在 Service 的生命周期里, 常用的有:
(1) 4 个手动调用的方法
手动调用方法 | 作用 |
startService() | 启动服务 |
stopService() | 关闭服务 |
bindService() | 绑定服务 |
unbindService() | 解绑服务 |
(2) 5 个自动调用的方法
内部自动调用的方法 | 作用 |
onCreat() | 创建服务 |
onStartCommand() | 开始服务 |
onDestroy() | 销毁服务 |
onBind() | 绑定服务 |
onUnbind() | 解绑服务 |
注意: 必须声明在 AndroidManifest.xml 文件中.(Android 四大组件均需要声明在此配置文件中)
使用场景:
(1) 仅启动一个后台服务, 长期进行某项任务, 使用 startService;
(2) 仅想与后台服务进行通信, 使用 bindService;
(3) 如果一个 Service 又被启动又被绑定, 则该 Service 会一直在后台运行, 既使用 startService, 又使用 bindService.
首先不管如何调用, onCreate 始终只会调用一次. 对应 startService 调用多少次, Service 的 onStartCommand 方法便会调用多少次. Service 的终止, 需要 unbindService 和 stopService 同时调用才行.
不管 startService 与 bindService 的调用顺序, 如果先调用 unbindService, 此时服务不会自动终止, 再调用 stopService 之后, 服务才会终止; 如果先调用 stopService, 此时服务也不会终止,
而再调用 unbindService 或者之前调用 bindService 的 Context 不存在了 (如 Activity 被 finish 的时候) 之后, 服务才会自动停止.
对比
(1) Service 与 Thread 的区别
注: 一般会将 Service 和 Thread 联合使用, 即在 Service 中再创建一个子线程 (工作线程) 去处理耗时操作逻辑
(2) Service 和 IntentService 的区别
实例
来源: http://www.bubuko.com/infodetail-2573292.html