【从零到一】Android四大组件(四) | Service(服务)


1. 服务是什么

  服务(即Service)是Android四大组件之一,属于计算型组件Service不依赖任何用户界面,适合运行不需要与用户交互但需要长时间在后台运行的任务。由于Service是在UI线程里执行操作的,因此耗时的后台计算建议在Service里创建单独的Thread执行。Service需要在AndroidManifest.xml中注册,也需要借助Intent启动。
  了解完Service的基本概念,下面就让我们看看Service需要掌握的内容吧。包括Service的生命周期,Service的种类,以及服务都有哪些用法吧。


2. 服务的生命周期

  下面让我们看下Service生命周期图
【从零到一】Android四大组件(四) | Service(服务)
  从上图可以看出,Service有两种不同的打开方式(启动服务绑定服务)。在详细讲解这两种方式前,让我们先通过表格看看几个自动回调方法:

回调方法 作用
onCreate() 创建服务
onStartCommand() 开始服务
onBind() 绑定服务
onUnbind() 解绑服务
onDestroy() 销毁服务

  看完表格,是不是很简单呢?那么还是来了解下Service的两种不同的打开方式吧~

  1. 启动服务
  • 启动服务是由组件通过startService()方法来启动Service,如果是第一次启动Service,则回调onCreate()->onStartCommand()(不是则只回调onStartCommand()方法)。然后Service一直运行下去,即使启动Service的组件被销毁也不受影响,直到调用了stopService()stopSelf() 方法,回调onDestroy()方法,服务被销毁。启动服务一般只执行单一操作,不会返回结果给调用方。
  1. 绑定服务
  • 绑定服务则是由组件通过bindService()方法来进行绑定Service,如果是第一次绑定Service,则回调onCreate()->onBind()(不是则只回调onBind()方法)。绑定服务提供一个客户端-服务器端的接口,此时,调用方可以获取到onBind()方法里返回的一个IBinder对象的实例,]从而达到与Service进行交互。Service会一直运行下去,直到调用了unbindService()方法,回调onUnbind()->onDestroy()方法,服务被销毁。

  要接收 IBinder,客户端必须提供一个ServiceConnection 实例用于监控与服务的连接,并将其传递给 bindService()。当 Android 系统创建了客户端与服务之间的连接时,会回调ServiceConnection对象onServiceConnected()方法,向客户端传递用来与服务通信的 IBinder,从而达到与Service进行交互。

  其实Service的打开方式还有第三种:

  1. 启动且绑定服务
  • Service既可以启动服务,同时也能绑定服务。此时需要回调onStartCommand()onBind()方法。在销毁服务时,也需要同时调用stopService()(或 stopSelf() )和unbindService()方法。

  紧接着让我们来看下服务的类别。


3. 服务的分类

  服务按照运行类型可以分为后台服务(最常见)和前台服务,按照运行地点可以分为本地服务远程服务
【从零到一】Android四大组件(四) | Service(服务)


4. 服务的基本用法

 4.1 服务的使用步骤

待更。