天天看点

android services启动方式 官方文档翻译

services作为android应用的组件,主要充当长期在后台运行而不需要提供用户界面的角色,另一个android组件可以启动一个service,这个services将会继续在后台运行即使用户切换到另一个应用。此外,android 组件可以绑定services以及和services交互,甚至执行进程间通信。例如,services可以在后台处理网络通信,播放音乐,或者和content provider交互。

services的启动有两种方式:

1.Started:

android 组件(例如 Activity)通过

startService()

启动services,一旦通过这种方式启动,services可以在后台无限期运行,即使启动该services的组件被销毁。通常service执行不返回结果或者回调的单一操作,例如从网络上传或者下载文件,当操作完成,应该销毁services。

2.Bound:

android 组件绑定services 通过

bindService()

启动services,被绑定的services提供客户-服务接口以便让另外的组件与其交互,发送请求,返回结果甚至进行进程间通信。只要有其他的组件绑定services,该service会一直运行下去,多个android组件可以同时绑定一个services,当所有这些组件与services解除绑定,该services会销毁。

第一种方式需要实现

onStartCommand()

方法,第二种方式需要实现

onBind()

不管你使用的是哪种方式,任何android组件可以调用service(甚至是别的项目的service),同样任何组件可以调用activity--通过intent。然后你可以在清单文件声明service为私有的,禁止别的项目调用。

创建service类你需要继承Service,然后实现下面几个重要的回调方法:

1.

onStartCommand()

,当另一个组件以start方式启动service,系统将会回调该方法,一旦该方法执行,service启动并在后台运行,当工作完成你需要手动地通过

stopSelf()

或者

stopService()

方法停止,如果你只想提供绑定 ,你不需要实现该方法。