期刊鉴别 论文检测 免费论文 特惠期刊 学术答疑 发表流程

基于AIDL进程间通信技术研究与分析

时间:2013-12-03 10:57 文章来源:http://www.lunwenbuluo.com 作者:胡安明 点击次数:

  摘要:进程间通信是操作系统中非常重要基础功能,实现进程通信有多种技术,比如管道通信流,IPC机制等,本文针对Android平台中进程通信技术AIDL进行较为深入的分析探讨,并给出实例加以论述。
  关键词:Android;AIDL;进程通讯
  操作系统中,多个进程间进行通讯、共享资源实现系统功能平台,是非常基础和重要的功能应用;同时,进程通讯也是操作系统内核的重要功能部分。Linux操纵系统中,进程通讯一般使用传统的IPC(Inter-ProcessCommunication,IPC)模式,且IPC模式实现了共享内存、管道、消息队列和socket等等,虽然IPC模式广泛使用,但IPC模式中UID/PID数据是由应用程序填入,存在着可靠性差,容易被篡改,难于维护等问题。
  AIDL(AndroidInterfaceDefinitionLanguage)是Android系统自定义的接口描述语言,是Android平台中实现进程间通讯方式一种,属轻量级通讯机制,有着实现简单、效率较高等优点。
  1AIDL实现原理及过程
  AIDL语言属于系统级原语,但语法结构和Java语言非常相似,AIDL中主要用于定义访问接口,无实现过程。与Java不同的是,AIDL允许定义函数参数传递的方向,AIDL中支持三种方向:in,out,inout。
  标识为in的参数将从调用者传递到远程服务中;
  标识为out的参数将从远程服务传递到调用者中;
  标识为inout的参数将先从调用者传递到远程服务中,再从远程服务返回给调用者。
  ADIL实现过程一般按以下步骤:(1)创建AIDL接口描述文件;(2)通过继承android.os.Iinterface接口实现远程服务AIDL接口的Java接口;(3)绑定和使用远程服务;(4)客户端调用。
  AIDL通讯案例中,服务端一般由一个AIDL文件和一个IService实现接口及Service实现类组成,其中IService接口用于实现AIDL所定义的访问方法,且IService必须是android.os.Iinterface子接口,Service实现类则是AIDL接口具体的实现类。
  1)定义如下AIDL文件如下:
  interfaceIService{
  intgetAccountBalance();
  intgetCustomerList(inStringbranch,outString[]customerList);
  }
  2)Iservice接口的实现
  在实现AIDL接口的Service接口其内部结构由三部分组成,1)内部静态抽象类Stub,Stub类及其子类在整个AIDL通讯中非常重要,是用于实现AIDL接口的实现类,Stub必须是Android.os.Binder的子类及IService的实现类。2)内部静态类Proxy,Proxy类属于是向远程服务提供调用接口类。3)是IService中实现的AIDL访问接口方法。Iservice接口部分代码如下所示:
  publicinterfaceIServiceextendsandroid.os.IInterface
  {
  publicstaticabstractclassStubextendsandroid.os.Binder{//Stub内部静态抽象类…..
  privatestaticclassProxyimplementscom.lifeblood.ITestService
  /内部静态类Proxy/………..
  publicintgetAccountBalance();
  publicintgetCustomerList(inStringbranch,outString[]customerList);
  //现的AIDL访问接口方法
  3)TestService类的实现
  TestService实现类,是Android中普通Service类Android.os.Service子类,是实现AIDL描述接口的重要实现类,但其实现过程有点特殊,是通过定义ItestService.Stub类型成员变量,实现Iservice接口中调用方法,也就是AIDL中定义的描述接口方法。
  4)Activity类中启动Service服务
  本案例中Service只是提供远程服务,无需在本地Activity中进行访问,所以使用Intent类启动Service即可,代码结构如下:Intentservice=newIntent(this,TestService.class);
  startService(service);
  5)AndroidManifest.XML中的配置
  AndroidManifest.XML文件的配置非常重要,远程服务时其他进程访问定位到服务,就是通过AndroidManifest文件的配置名称进行定位,其Service段配置如下:
  6)客户端进程调用
  客户进程调用时与JNDI方式相似,通过实现ServiceConnection接口绑定远程服务,获取Service对象,从而实现调用,在客户端实例中也需拷贝AIDL接口文件。
  2测试运行
  程序运行步骤如下:首先运行TestService服务端;再运行AIDLClient客户端;点击绑定连接AIDL获取Service服务,并显示调用信息。效果如图1所示。
  3结束语
  本文对AIDL接口描述语言的语法结构及实现原理方式,以及在远程调用过程中AIDL的实现过程,及相关的配置方法进行了分析与探讨。AIDL是按面向对象的设计思想实现进程通讯,且AIDL语言符合Android平台中系统原语规则,为Android系统级开发过程中,进程间通讯提供了较为便利和简单访问模型。

  •   论文部落提供核心期刊、国家级期刊、省级期刊、SCI期刊和EI期刊等咨询服务。
  •   论文部落拥有一支经验丰富、高端专业的编辑团队,可帮助您指导各领域学术文章,您只需提出详细的论文写作要求和相关资料。
  •  
  •   论文投稿客服QQ: 论文投稿2863358778 论文投稿2316118108
  •  
  •   论文投稿电话:15380085870
  •  
  •   论文投稿邮箱:lunwenbuluo@126.com

    联系方式

    • 论文投稿客服QQ: 论文投稿2863358778
    • 论文投稿客服QQ: 论文投稿2316118108
    • 论文投稿电话:15380085870
    • 论文投稿邮箱:lunwenbuluo@126.com

    热门排行

     
    QQ在线咨询
    咨询热线:
    15380085870
    微信号咨询:
    lunwenbuluoli