Skip to content

Service综述

Service是一种可在后台执行长时间运行操作而不提供界面的应用组件。 服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可通过绑定到服务与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可在后台处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序进行交互。

本文介绍几个概念:

  • 前台,后台服务与绑定
  • 服务的生命周期

在开始使用Service之前,我们先来认识一下Service的几个概念。

前台,后台服务与绑定

有3种不同的服务类型。

前台服务

前台服务执行一些用户能注意到的操作。例如,音频应用会使用前台服务来播放音频曲目。前台服务必须显示通知。 即使用户停止与应用的交互,前台服务仍会继续运行。

后台服务

后台服务执行用户不会直接注意到的操作。例如,如果应用使用某个服务来压缩其存储空间,则此服务通常是后台服务

注意:如果您的应用面向 API 级别 26 或更高版本,当应用本身未在前台运行时,系统会对运行后台服务施加限制。在诸如此类的大多数情况下,您的应用应改为使用计划作业。

绑定服务

当应用组件通过调用bindService()绑定到服务时,服务即处于绑定状态。 绑定服务会提供客户端-服务器接口,以便组件与服务进行交互、发送请求、接收结果,甚至是利用进程间通信 (IPC) 跨进程执行这些操作。 仅当与另一个应用组件绑定时,绑定服务才会运行。多个组件可同时绑定到该服务,但全部取消绑定后,该服务即会被销毁。

生命周期

Activity类似,Service也有自己的生命周期。 启动服务方式不同,走的生命周期也不同。

后面会针对不同的启动方式,介绍生命周期的变化。

作者: RustFisher
联系: rf.cs@foxmail.com
博客: rustfisher.com | RustFisher cnblog
示例: AndroidTutorial Gitee, Tutorial Github
链接: https://www.an.rustfisher.com/android/service/service-intro/
一家之言,仅当抛砖引玉。如有错漏,还请指出。