本发明专利技术涉及一种安卓系统中多业务下进程间通信系统及其实现方法,包括服务使用者Client、Binder连接池的管理者Service、进程服务对应的AIDL文件和进程服务对应的Binder类;通过单个Servicer组件管理不同进程对应的Binder服务。增加一个Binder服务,将其设置为Binder连接池,通过在客户端绑定此Binder连接池的服务,转换成接口,在需要调用某个进程的服务时,通过Binder连接池的接口获取对应进程的服务。减少了多个AIDL接口对应多个重量级组件Service带来的系统的开销,提升了系统性能。
【技术实现步骤摘要】
本专利技术涉及一种安卓系统中多业务下进程间通信系统及其实现方法,属于安卓多业务下进程间通信优化
技术介绍
Android系统为应用开发者提供了多种进程间通信的方法,例如:ContentProvider、Messenger、AIDL(AndroidInterfaceDefinitionLanguage)等。而支持它们能够正常使用的原因是安卓在Linux内核中添加了Binder驱动(如图3)。作为开发者经常使用的进程通信方法就是AIDL,在使用AIDL的时候必不可少的需要做以下的工作:1、创建AIDL文件,然后IDE工具会自动生成对应的Java接口。2、在服务端创建一个Service,实现(1)中的java接口中的方法,同时返回一个Binder对象。3、在客户端绑定所需要的服务,获取对应的Binder对象,将其转化成对应的接口。通过这三个步骤,客户端就可以使用其他进程的服务,调用过程中就像调用自己的方法,非常方便。但是,当项目中需要多种业务需求,而业务又需要分别占用各自的进程。按照目前ADIL的方法进行进程通信,则需要对不同的业务创建不同的AIDL文件,每一个AIDL文件对应着一个Java接口,每一个Java接口都对应着一个Service组件,如图1所示。随着业务数量的增加,AIDL接口增加,对应着的Service也会无限的增加,而Service作为安卓系统的四大组件之一,无限的增加Service组件会使系统变得非常重量级,影响系统的正常运行。
技术实现思路
针对现有技术的不足,本专利技术提供了一种安卓系统中多业务下进程间通信系统;本专利技术还提供了上述进程间通信系统的实现方法;本专利技术在原有AIDL进程间通信上提出一种Binder连接池的概念,用一个Service组件来管理Binder连接池中的所有Binder,减少了Service组件的数量,在某种程度下减少了系统的开销,提升了系统性能。术语解释1、AIDL,AndroidInterfaceDefinitionLanguage,即Android接口定义语言。2、IDE(IntegratedDevelopmentEnvironment)集成开发环境,是用于提供程序开发环境的应用程序。例如开发android应用的IDE工具就是AndroidStudio。3、Binder类:一个实现了服务进程对应Java接口的Java类。4、Binder对象,Binder类的一个实例。5、Service组件,Service组件即服务组件,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉。Service组件是android系统为android应用开发者提供的四大组件的其中之一,Service组件主要负责需要长期运行的任务。6、bindService方法,是客户端开启service组件时调用的一个方法。是android系统中提供的方法。本专利技术的技术方案为:一种安卓系统中多业务下进程间通信系统,包括服务使用者Client、Binder连接池的管理者Service、进程服务对应的AIDL文件和进程服务对应的Binder类;进程服务对应的AIDL文件规定了不同进程服务提供的服务接口,由进程服务对应的Binder类来实现对应的服务接口;Binder连接池的管理者Service管理其对应的Java接口的Binder类,该Binder类具有查询功能,当服务使用者Client需要某个进程服务时,通过向Binder连接池的管理者Service提供具有该进程服务唯一标识的标识码,Binder连接池的管理者Service向服务使用者Client返回该进程服务对应的Binder类,服务使用者Client得到该进程服务对应的Binder类后,通过类型转换将该远程对象Binder转换成对应的服务接口,服务使用者Client使用服务接口提供的方法,实现进程间通信。上述安卓系统中多业务下进程间通信系统的实现方法,具体步骤包括:(1)建立Binder连接池的管理者Service的AIDL文件,利用IDE工具自动生成Binder连接池的管理者Service的AIDL文件对应的Java接口,同时创建对应的Java接口的Binder类;该Binder类用于通过参数binderCode查询所需要的进程服务,并返回所需要的进程服务的具体实现类的远程对象Binder,binderCode是指进程服务唯一标识的标识码;(2)建立各个进程服务对应的AIDL文件,利用IDE工具自动生成各个进程服务对应的AIDL文件对应的Java接口,同时创建对应的Java接口的Binder类;该Binder类用于实现对应的进程服务对应的业务;例如:需要一个计算加法的业务,则在AIDL文件中声明一个用于做加法运算的方法,但是不做具体实现。接着IDE工具会自动生成业务服务AIDL文件对应的Java接口,最后创建业务服务的具体实现类,实现Java接口中的方法。(3)创建Binder连接池的管理者Service对应的Service组件,具体是指:通过继承安卓中的Service类,覆写onBindr方法,在onBinder方法中返回Binder连接池的管理者Service对应的Binder类的实例;(4)服务使用者Client通过binderService方法启动步骤(3)中的Service组件,启动成功后,获取步骤(3)中生成的实例,通过安卓中自带的asInterface方法将其转换为与步骤(1)生成的Java接口相匹配的接口;(5)服务使用者Client通过步骤(4)生成的相匹配的接口,调用接口的查询方法,根据需要获取的进程服务的参数binderCode,查询所需要的进程服务,并返回所需要的进程服务对应的Binder类,将其转化成步骤(2)创建的对应的Java接口相匹配的接口,服务使用者Client调用需要的进程服务提供的方法。本专利技术的有益效果为:本专利技术通过单个Servicer组件管理不同进程服务对应的Binder类。增加一个Binder服务,将其设置为Binder连接池,通过在服务使用者Client绑定此Binder连接池的服务,转换成接口,在需要调用某个进程服务时,通过Binder连接池的接口获取对应进程的服务。减少了多个AIDL接口对应多个重量级组件Service带来的系统的开销,提升了系统性能。附图说明图1为现有技术中针对多业务下进程间通信系统的框架图;图2为本专利技术所述的安卓系统中多业务下进程间通信系统的框架图;图3为进程间通信的原理示意图;图4为实现进程服务对应的Binder类的流程示意图。具体实施方式下面结合说明书附图和实施例对本专利技术作进一步限定,但不限于此。实施例1一种安卓系统中多业务下进程间通信系统,如图2所示,包括服务使用者Client、Binder连接池的管理者Service、进程服务对应的AIDL文件和进程服务对应的Binder类;进程服务对应的AIDL文件规定了不同进程服务提供的服务接口,由进程服务对应的Binder类来实现对应的服务接口;Binder连接池的管理者Service管理其对应的Java接口的Binder类,该Binder类具有查询功能,当服务使用者Client需要某个进程服务时,通过向Binde本文档来自技高网...
【技术保护点】
一种安卓系统中多业务下进程间通信系统,其特征在于,包括服务使用者Client、Binder连接池的管理者Service、进程服务对应的AIDL文件和进程服务对应的Binder类;进程服务对应的AIDL文件规定了不同进程服务提供的服务接口,由进程服务对应的Binder类来实现对应的服务接口;Binder连接池的管理者Service管理其对应的Java接口的Binder类,该Binder类具有查询功能,当服务使用者Client需要某个进程服务时,通过向Binder连接池的管理者Service提供具有该进程服务唯一标识的标识码,Binder连接池的管理者Service向服务使用者Client返回该进程服务对应的Binder类,服务使用者Client得到该进程服务对应的Binder类后,通过类型转换将该远程对象Binder转换成对应的服务接口,服务使用者Client使用服务接口提供的方法,实现进程间通信。
【技术特征摘要】
1.一种安卓系统中多业务下进程间通信系统,其特征在于,包括服务使用者Client、Binder连接池的管理者Service、进程服务对应的AIDL文件和进程服务对应的Binder类;进程服务对应的AIDL文件规定了不同进程服务提供的服务接口,由进程服务对应的Binder类来实现对应的服务接口;Binder连接池的管理者Service管理其对应的Java接口的Binder类,该Binder类具有查询功能,当服务使用者Client需要某个进程服务时,通过向Binder连接池的管理者Service提供具有该进程服务唯一标识的标识码,Binder连接池的管理者Service向服务使用者Client返回该进程服务对应的Binder类,服务使用者Client得到该进程服务对应的Binder类后,通过类型转换将该远程对象Binder转换成对应的服务接口,服务使用者Client使用服务接口提供的方法,实现进程间通信。2.权利要求1所述的安卓系统中多业务下进程间通信系统的实现方法,其特征在于,具体步骤包括:(1)建立Binder连接池的管理者Service的AIDL文件,利用IDE工具自动生成Binder连接池的管理者Service的AIDL文件对应的Java接口,同时创建对应的Java接口的Binder类;该Binder类用于通过参数b...
【专利技术属性】
技术研发人员:张海霞,王瑞刚,
申请(专利权)人:山东大学,
类型:发明
国别省市:山东;37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。