欢迎来到天天文库
浏览记录
ID:6304784
大小:74.10 KB
页数:10页
时间:2018-01-09
《android服务框架分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Android服务框架分析摘要:Android系统服务提供系统最基本、最核心的功能,比如设备控制、地理位置信息提供、定时设置等。这些系统服务都是使用Android的ServiceFramework实现的,AndroidServiceFramework是Android系统的重要组成部分。探索ServiceFramework内部原理,理解并掌握ServiceFramework的运作方式,有助于我们开发出各种新功能,例如视频通话、DMB服务等非基本的系统服务。本文将重点学习AndroidServiceFr
2、amework,分析各个构成元素,理解其原理与运行机制,以便开发出各种服务。一、服务框架(ServiceFramework)AndroidServiceFramework是一系列类的集合,它用来开发运行在Android平台上的各种服务。ServiceFramework提供了设计精良、复用度高的服务设计与实现,开发者可以使用ServiceFramework提供的各种类与接口,快速开发出可靠优良的服务。在使用ServiceFramework开发服务时,开发者只要把主要精力集中在开发服务的核心功能上即可,
3、服务核心功能之外的部分ServiceFramework会帮我们处理。例如,在开发服务时,服务注册、服务BinderIPC等功能都由系统提供,开发者不需要实现这些功能。总之,开发者在使用ServiceFramework开发服务时,只要集中精力开发服务要提供的功能即可。之前,读者可能听说过AndroidApplicationFramework这个词,但什么是ServiceFramework,有些读者可能不太明白。在Android平台中,ServiceFramework大致由两大部分构成,一部分是使用C+
4、+语言编写的本地服务框架,另一部分是使用Java语言编写的Java服务框架。既然已经存在“应用程序框架”这一术语了,为什么还要使用“服务框架”(ServiceFramework)这个术语呢?首先在说明由C++语言编写的系统服务以及由Java编写的系统服务时,有必要将两者合在一起来说明。在使用应用程序框架(ApplicationFramework)时,由Java实现的服务将被包含进去,所以在开发服务时需要一个通用的术语来指代所使用的框架(Framework)。并且,应用程序框架中构成要素十分庞大,为了
5、说明的方便,也需要一个术语将实现服务所需要的素有框架元素表达出来。其次,在“服务框架”中包含了所有框架的特征。框架有两个代表性的特征,一是通过扩展而非修改框架添加新的功能;二是使用框架实现的应用程序控制流由框架而非程序自身控制。在Android平台中,许多服务通过扩展而非修改服务框架来实现,并且服务的动作流也是由服务框架所决定,所实现的服务只是按照内部定义的方式进行运作。若开发者采用任意的方法开发服务,那么开发出的服务将无法再系统中正常运行,即只有使用Android提供的类与已经定义好的方法开发,才
6、能够开发出可以再系统中正常运行的服务。一、服务框架(ServiceFramework)的构成1、各层构成元素的配置在分析“服务框架”时,将BinderIPC各抽象层的作用以及相应的类联系起来,有助于我们更容易地理解“服务框架”中的各个类。“服务框架”各个层的组成元素以及它们各自的作用如表1:服务客户端(ServiceClient)ServiceServer服务层配置IFooService服务接口foo()服务接口服务FooServicefoo()IFooServicefoo()功能■FooServi
7、ce服务的公用接口■提供FooService服务的foo()函数接口■FooService服务的公用接口■运行FooService服务的foo()函数RPC层配置BpFooService服务协议foo()BnFooService服务StubonTransact()功能■支持BinderRPC■调用foo()函数,转换成RPC数据■支持BinderRPC■分析RPC代码与数据,调用foo()服务的Stub函数IPC层配置BinderIPC处理IPCThreadStateBpBinderBinderIP
8、C处理IPCThreadStateBpBinder功能■支持BinderIPC■将RPC代码与数据转换成IPC数据,传递给BinderDriver■支持BinderIPC■接收BinderIPC数据,转换成RPC代码与数据表1首先服务客户端与ServiceServer在ServiceFramework的构成元素配置上存在不同。在服务层的服务客户端有服务接口,而在ServiceServer中不仅有服务接口,还有相应的服务。在RPC层的服务客户端只有名称为“BpFooSe
此文档下载收益归作者所有