services在后台运行,没有提供用户界面,也不能直接与用户交互。安卓系统不限制services的生命周期,只要有足够的资源运行前台任务,services就会在后台一起运行下去。应用程序可以提供与用户交互的activity去控制后台的service.
例如,假设我们开发了一个音乐播放应用程序。我们会让用户选择一个音乐文件,并且让它在用户的设备上一直播放。一个初始的activity可以与用户交互来选择音乐;然而,这个activity不能直接播放音乐,因为activity的生命周期受限的它的可视的时间。我们需要一个service在后台运行,这样这个应用程序就可以在用户进行其他操作时一直运行下去。在任何给定的时间,用户可以开始一个activity来控制这个service,因为这个service本身不能与用户直接交互。
和service一样,一个应用程序不会受限于它自己的service.一个应用程序可以使用由平台或者其他应用程序提供的service。例如,为了不停地获取全球定位系统坐标信息,应用程序可以启动由平台提供的GPS service。
service同样也是通过intent启动的。一个service的单个实例可以在任何时候运行。安卓系统框架在第一个请求到达时开始启动service,然后把一系列请求传递给已经存在的实例。
service有时需要引起用户的注意。service使用通知(notification)来告诉用户service当前的运行状态。例如,在我们的音乐播放程序中,当新的歌曲开始播放时,一个带有歌曲名字的通知可以在通知工具条中显示,告知用户相当歌曲信息。