Service是Android组件的一种,派生自android.app.service类。它不提供交互界面,只是在后台运行,进行功能调度或提供数据支持。

 

  1. 运行模式和使用方式

  2. 功能特点

  3. 数据结构

  4. 生命周期

  5. 认识误区

 

运行模式和使用方式

 

从运行模式上看,Service组件没有运行在独立的进程或线程中。默认情况下,service构造于应用进程中,并且和其他组件一样,都在应用进程的主线程中运行。(可以通过配置Service的进程参数使其在特定的进程中运行。)

这就意味着,如果直接在service中同步执行耗时的操作,将会导致主线程阻塞或界面假死,从而无法响应用户的操作。

 

从使用方式上看,Service组件不仅可以与Activity建立双向连接,提供数据和功能支持,也可以单向接受Intent对象的请求,进行数据的分析处理和功能调度。

所以在不同的使用方式下,Service组件扮演的角色和开发模式完全不同。

 

 

功能特点

 

Activity组件,意在帮助应用与用户进行交互,而Service组件,则用于辅助应用与系统中的其他组件或系统服务进行沟通。

 

如使用方式所述,Service可以单向接收Intent对象的请求,进行数据的分析处理和功能调度。

 

以闹钟应用为例,它需要在设备开机时启动,读取设定好的闹钟信息,然后在系统的定时服务中注册,以便到时能够提醒。同时,闹钟应用还要监听一些和时间变化相关的事件,如时间或时区改变,以便能够立即检查所设的提醒事件是否到期需要提醒用户。

 

当发生相应事件的时候,触发器组件的BroadcastReceiver.onReceiver函数将被调用。触发器组件本身不能缓存数据或执行过于耗时的操作,因此往往需要通过Context.startService函数将事件转发给对应的服务组件来处理。

 

              

service的python是什么意思 service的解释_数据

 

可以看出,在这种使用方式下,Service组件扮演功能调度者的角色。它从事件触发器对象那里搜集各类事件信息,进一步分析和处理,然后更新界面,修改数据等操作,调度整个应用使其保持正确的状态。

 

Service组件还可以扮演功能提供者的角色,为Activity组件提供功能和数据支持。

 

Activity组件是Android中功能复用的基本单元,但这种复用的粒度太大,包含了整个界面、数据和功能。而在有的场景下,应用不需要复用第三方界面,而只需要获得一些功能和状态数据。这种支持就是通过Service组件来提供。

 

Android的输入法框架就是一个基于Service组件进行功能复用的例子。Android设备中可能会安装多个输入法应用,每个输入法应用都会有自己独特的交互界面和字典数据。它们不需要界面复用,只需要系统提供控制输入法的消隐和绑定等操作的支持即可。

 

输入法的Activity组件通过调用Context.bindService函数发起连接请求。经过组件管理服务的调度,系统输入法服务(android.inputmethodservice.InputMethodService)的onBind方法会被调用并构造一个IBinder对象返还给输入法Activity,从而与其建立一个IPC连接,Activity可以通过远程方法调用来进行输入法相关操作。输入法Activity结束其服务后,应该调用Context.unbindService函数终止和系统输入法服务的连接。

 

       

service的python是什么意思 service的解释_数据_02

 

 

数据结构

 

service的python是什么意思 service的解释_复用_03

 

 

 

 

 

 

生命周期

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.