Service的基本概述与特点:
1. Service是一个没有用户界面的在后台运行执行耗时操作的应用组件
2. 其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。
3. 一个组件能够绑定到一个service与之交互,我们之称为IPC机制
4. Service与Activity相同,不能做耗时操作,否则会ANR
5. Service的两种状态可以共存
Service的两种状态:
1. 启动状态(主要用于执行后台计算):
a) 通过startService()启动的服务处于启动状态
b) 一旦启动,s即使启动它的应用组件已经被销毁了,service也在后台运行
c) 通常started状态的service执行单任务并且不返回任何结果给启动者。比如当下载或上传一个文件。
d) 当操作完成时,service应该停止它本身
Intent intentService = new Intent(this,MyService.class);
startService(intentService);
2. 绑定状态(主要用于其他组件和Service交互):
a) 通过调用bindService()来启动的服务处于绑定状态
b) Service提供与绑定组件交互的接口。可以发送请求,获取返回结果,还可以跨进程通信
c) 这种service只有被绑定后才能运行。
d) 多个组件可以绑定同一个service,当所有绑定被解除后,service被销毁
Intent intentService = new Intent(this,MyService.class);
bindService(intentService,mServiceConnect,BIND_AUTO_CREATE);
Service的生命周期:
bind service的不同之处在于当绑定的组件销毁后,对应的service也就被kill了