终端设备及其跨进程通信方法技术

技术编号:24995331 阅读:49 留言:0更新日期:2020-07-24 17:58
本发明专利技术涉及一种终端设备及其跨进程通信方法,该方法包括如下步骤:客户进程根据其业务模块对接口类的调用,查询由服务进程预先注册了接口注册信息的接口库获得该接口类的接口标识进行格式封装,发起接口创建请求;服务进程接收该接口创建请求,解析该请求,利用其中的接口标识执行对应的实现类的创建操作,产生该实现类的实例对象,以结果格式封装后向客户进程反馈该创建操作产生的结果数据;客户进程接收结果数据,解析成所述实例对象的代理对象,将之返回给客户进程的业务模块,以供业务模块通过调用所述代理对象而实现调用所述实例对象。本发明专利技术简化了应用程序开发过程中涉及通信接口实现的开发步骤,提供了更为简便高效的跨进程通信解决方案。

【技术实现步骤摘要】
终端设备及其跨进程通信方法
本专利技术涉及Android操作系统的应用程序开发技术,尤其涉及一种跨进程通信方法,还涉及其相应的终端设备。
技术介绍
开发Android应用过程中,根据业务规模、场景的不同,我们会开始引入多进程通信技术到现有技术体系中。使用多进程通信技术,能突破应用可分配系统资源的限制(Android系统资源的分配以进程为基本单位),让应用的可使用资源成倍增长,能实现应用保活等业务需求,但是增加了多进程通信的技术体系,我们就需要处理多进程通信中数据传输的问题,由此将大幅度增加开发的技术复杂度。Android官方本身提供了多种解决多进程通信的技术,我们通常使用AIDL来实现进程间通信。AIDL是Android中IPC(Inter-ProcessCommunication)方式中的一种,是AndroidInterfacedefinitionlanguage(Android接口定义语言)的缩写。AIDL虽然各方面指标都较为符合实际需要,但处理过程复杂,开发成本较高。一般使用AIDL开发一个支持多进程通信的接口方法,我们需要做如下操作:1、创建aidl文件,在aidl文件中定义接口类;2、如果接口类的方法的参数中含有自定义类型,还需要为该类型再定义一个aidl文件;3、需要创建一个Service类为提供服务的进程提供信息的通信服务;4、定义一个Binder类去实现aidl中定义的接口类,在实现类中实现功能逻辑;5、Service类通过onBind接口返回步骤4中Binder类的对象给Client程序;6、Client程序需要去连接Server程序的Service类,在onServiceConnected方法中获取Binder类的代理对象,通过代理对象调用Binder类的接口方法来获取Binder类提供的功能;7、Client程序需要维护其与Service类的连接状态,因为Service类是其通信交互的载体。按照上述利AIDL开发多进程通信的接口方法可以创建一个跨进程接口,问题的关键在于,通常情况下每个提供IPC服务的接口类都需要按照上述的步骤重新操作一遍,如此可以看出,现有技术虽然支持ipc通信,但是其开发步骤复杂而繁琐、可扩充性差,导致开发成本较高。这特别不利于一些需要联合运行的项目的开发。
技术实现思路
本专利技术的首要目的在于为提升应用程序开发效率而提供一种跨进程通信方法。相应的,作为本专利技术的其他目的,也基于前一目的的方法而提供与之相适应的终端设备。为满足本专利技术的首要目的,本专利技术提供的一种跨进程通信方法,该方法包括如下步骤:客户进程根据其业务模块对接口类的调用,查询由服务进程预先注册了接口注册信息的接口库获得该接口类的接口标识,按照预协议的请求格式进行封装,向服务进程发起接口创建请求;服务进程接收该接口创建请求,解析该请求,利用其中的接口标识执行对应的实现类的创建操作,产生该实现类的实例对象,逆向以预协议的结果格式封装后向客户进程反馈该创建操作产生的结果数据;客户进程接收所述结果数据,按照协议解析成所述实例对象的代理对象,将之返回给客户进程的业务模块,以供所述业务模块通过调用所述代理对象而实现调用所述实例对象。较佳的,所述服务进程由其业务模块负责预先向接口库添加其实现类的接口注册信息,实现接口标识与接口类、实现类之间的关联,所述服务进程与客户进程在其彼此交互过程中,均访问该接口库内相应的接口注册信息以配合对所述请求格式和结果格式的封装和解析。较佳的,为确保协议的可靠执行,所述的请求格式与所述的结果格式,均遵守预先规范的协议,使得服务进程与客户进程两者,一方封装的格式可被另一方正确解析。一个实施例中,所述代理对象基于Java代理技术实现,其被构建为服务进程中的关联于所述接口标识的实现类的实例对象的代理。一个实施例中,所述客户进程在其运行后,先与所述服务进程预注册且在运行的服务组件实施绑定,以实现客户进程与服务进程的后续交互。进一步,若所述服务组件未运行,由所述客户进程请求系统启动服务进程的所述服务组件。较佳的,客户进程响应于其业务模块的需求通过调用所述代理对象而实现调用所述实例对象的过程,包括如下具体步骤:客户进程的业务模块发起调用所述代理对象的方法的接口调用请求;所述代理对象向接口库查询确定该方法的相应的属性信息,将所述属性信息形成预协议的请求格式后,发送给服务进程;服务进程接收并查询接口库解析出该属性信息,调用相应的实现类对象执行其中相应的方法;服务进程以预协议的结果格式向客户进程反馈该方法执行后的结果数据;客户进程接收该结果数据,将其解析还原后返回给其业务模块。一个更具体的实施例中,所述属性信息包括代理对象的对象标识、所述方法的方法标识、传递给该方法的运行参数以及返回值类型,属性信息被服务进程解析后,服务进程依据所述对象标识确定目标实例对象,依据所述方法标识唯一性确定该实例对象中的目标方法,该目标方法接收属性信息中传递的运行参数后运行,并返回符合该属性信息中的返回值类型所规范的结果数据。较佳的,所述方法标识在所述接口库中实现与所述接口类、实现类以及实例对象的关联。部分实施例中,所述服务进程适于按照预设条件启动所述客户进程。部分实施例中,一个所述的服务进程并行地与一个或多个所述的客户进程实施本方法的交互,和/或,至少一个所述客户进程与服务进程运行在不同的虚拟机中。为满足本专利技术的其他目的,本专利技术提供的一种终端设备,包括中央处理器和存储器,所述中央处理器用于调用运行存储于所述存储器中的计算机程序以执行如前一目的所述的跨进程通信方法的步骤。相对于现有技术,本专利技术具备如下优点:首先,本专利技术的方法,利用接口库存储和管理应用程序的实现类,在本应用程序运行时预先向接口库中注册其内建的实现类,后供客户进程调用,这一过程中,通过接口标识关联起客户进程的接口类和本应用程序的实现类以及实现类的实例对象、代理对象等内存资源,对进程与进程之间的调用起到集中调度和管控的作用,使得本应用程序(表现为服务进程)与客户进程之间的接口调用更为灵活高效。对于类的方法层面,接口库也为其配置了存储和管理机制,使得实例对象的内建方法运行所需的相关属性信息均可通过查询接口库实现跨进程互通,由此,客户进程通过其代理对象便可实现对服务进程的实例对象的内建方法进行传参和调用。所以,接口库及其协议解析机制的设置,使跨进程高效通信成为可能。其次,跨进程通信效率的提高,体现到开发过程中,尤其是在Android操作系统的开发过程中,便可大大提高程序开发效率。在Android中,本专利技术的实现,使得不同进程之间调用接口时,不必基于AIDL每次针对新的接口又执行完全一致的接口配置流程,也就是说,本专利技术简化了Android系统中新增跨进程通信接口的开发步骤,在本专利技术的基础上,开发人员只需针对跨进程通信接口,创建API接口类及其实现类即可,而不必重复其他公知步骤,后续运行本专利技术的本文档来自技高网
...

【技术保护点】
1.一种跨进程通信方法,其特征在于,该方法包括如下步骤:/n客户进程根据其业务模块对接口类的调用,查询由服务进程预先注册了接口注册信息的接口库获得该接口类的接口标识,按照预协议的请求格式进行封装,向服务进程发起接口创建请求;/n服务进程接收该接口创建请求,解析该请求,利用其中的接口标识执行对应的实现类的创建操作,产生该实现类的实例对象,逆向以预协议的结果格式封装后向客户进程反馈该创建操作产生的结果数据;/n客户进程接收所述结果数据,按照协议解析成所述实例对象的代理对象,将之返回给客户进程的业务模块,以供所述业务模块通过调用所述代理对象而实现调用所述实例对象。/n

【技术特征摘要】
1.一种跨进程通信方法,其特征在于,该方法包括如下步骤:
客户进程根据其业务模块对接口类的调用,查询由服务进程预先注册了接口注册信息的接口库获得该接口类的接口标识,按照预协议的请求格式进行封装,向服务进程发起接口创建请求;
服务进程接收该接口创建请求,解析该请求,利用其中的接口标识执行对应的实现类的创建操作,产生该实现类的实例对象,逆向以预协议的结果格式封装后向客户进程反馈该创建操作产生的结果数据;
客户进程接收所述结果数据,按照协议解析成所述实例对象的代理对象,将之返回给客户进程的业务模块,以供所述业务模块通过调用所述代理对象而实现调用所述实例对象。


2.根据权利要求1所述的方法,其特征在于:
所述服务进程由其业务模块负责预先向接口库添加其实现类的接口注册信息,实现接口标识与接口类、实现类之间的关联,所述服务进程与客户进程在其彼此交互过程中,均访问该接口库内相应的接口注册信息以配合对所述请求格式和结果格式的封装和解析。


3.根据权利要求1所述的方法,其特征在于,所述的请求格式与所述的结果格式,均遵守预先规范的协议,使得服务进程与客户进程两者,一方封装的格式可被另一方正确解析。


4.根据权利要求1所述的方法,其特征在于,所述代理对象基于Java代理技术实现,其被构建为服务进程中的关联于所述接口标识的实现类的实例对象的代理。


5.根据权利要求1所述的方法,其特征在于,该方法还包括如下步骤:
所述客户进程在其运行后,先与所述服务进程预注册且在运行的服务组件实施绑定,以实现客户进程与服务进程的后续交互。


6.根据权利要求5所述的方法,其特征在于,若所述服务组件未运行,由所述客户进程请求系统启动服务进程的所述服务组件。

【专利技术属性】
技术研发人员:关安杰
申请(专利权)人:广州华多网络科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1