终端设备及其跨进程接口调用实现和执行方法技术

技术编号:24852724 阅读:21 留言:0更新日期:2020-07-10 19:06
本发明专利技术涉及一种终端设备及其跨进程接口调用实现、执行方法,该实现方法包括如下步骤:跨进程通信的服务进程与客户进程以编程注解的方式共同协议分别定义同一接口的实现类和接口类,约定该接口的接口标识;运行后,服务进程将注解的接口注册信息注册到接口库,允许客户进程与自身绑定通信;当客户进程创建接口时,解析该接口的注解获得接口标识,驱动服务进程查询接口库以实例化与该接口标识相应的实现类生成实例对象,返回对象标识;当客户进程调用其接口的方法时,通过调用携带所述对象标识的代理对象,间接调用实现类对象,获取结果数据。本发明专利技术简化了应用程序开发过程中涉及通信接口实现的开发步骤,提供了更为简便高效的跨进程通信解决方案。

【技术实现步骤摘要】
终端设备及其跨进程接口调用实现和执行方法
本专利技术涉及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注解技术实现,所述代理对象按照Java代理技术实现。较佳的,服务进程负责向操作系统注册服务组件,供客户进程与之绑定通信,在其彼此解除绑定后,服务进程删除因客户进程产生的所述接口库中的接口注册信息。为满足本专利技术的第二目的,本专利技术提供的一种跨进程接口调用执行方法,包括如下步骤:客户进程根据其业务模块中的接口类,调用其解析模块解析出该接口类预先注解的接口标识,将其封装成请求格式,向服务进程发起接口创建请求;服务进程接收该接口创建请求,解析该请求获得接口标识,查询接口库确定相应的实现类后执行该实现类的实例化创建操作,产生相应的实例对象;服务进程将实例对象及其对象标识的对应关系存储于接口库中,将该对象标识封装成结果数据返回给客户进程;客户进程接收所述结果数据,解析出其中的对象标识形成携带该对象标识的代理对象,将之返回给客户进程的业务模块,以供所述业务模块通过调用所述代理对象而实现调用所述实例对象。进一步,客户进程响应于其业务模块的需求通过调用所述代理对象而实现调用所述实例对象的过程,包括如下具体步骤:客户进程的业务模块发起所述接口类中方法的接口调用请求;所述代理对象代理调用服务进程中的实例对象的相应的内建方法,获得该内建方法运行后的结果数据;所述代理对象将所述结果数据返回给所述的业务模块。进一步,所述代理对象代理调用服务进程中的实例对象的相应的内建方法,获得该内建方法运行后的结果数据的过程,包括如下具体步骤:所述代理对象依据注解解析出该方法的方法标识,连同代理对象自身的对象标识及业务模块传入的运行参数形成至少部分属性信息,将所述属性信息封装成请求格式发送给服务进程;服务进程接收该属性信息后,解析出该属性信息中的对象标识、方法标识以及运行参数,依据对象标识确定实例对象,依据方法标识查询接口库确定实例对象中的内建方法,以所述运行参数为传入参数运行该方法;服务进程将该方法执行后的结果数据封装成结果格式后回传给代理对象。较佳的实施例中,所述服务进程由其业务模块负责预先向接口库添加其实现类的接口注册信息,在接口注册信息中实现接口标识与实现类之间的关联,以通过接口标识确定相应的实现类。较佳的实施例中,所述服务进程由其业务模块在执行实例化后向接口库添加其实例对象的接口注册信息,在接口注册信息中实现实例对象与其对象标识之间的关联,以通过对象标识确定相应的实例对象。本文档来自技高网
...

【技术保护点】
1.一种跨进程接口调用实现方法,其特征在于,该方法包括如下步骤:/n应用程序中,跨进程通信的服务进程与客户进程以编程注解的方式共同协议分别定义同一接口的实现类和接口类,约定该接口的接口标识;/n在应用程序安装运行后,服务进程将其实现类中注解的接口注册信息注册到接口库,允许客户进程与自身基于操作系统进程通信机制进行绑定通信;/n当客户进程创建某个接口时,解析该接口的注解获得接口标识,驱动服务进程查询接口库中的接口注册信息确定与该接口标识相应的实现类,实例化该实现类生成实例对象,返回该实例对象的对象标识;/n当客户进程调用其已创建的接口的方法时,通过调用携带所述对象标识的代理对象,间接调用服务进程中相应的实现类对象,执行其中的内建方法,获取返回的结果数据。/n

【技术特征摘要】
1.一种跨进程接口调用实现方法,其特征在于,该方法包括如下步骤:
应用程序中,跨进程通信的服务进程与客户进程以编程注解的方式共同协议分别定义同一接口的实现类和接口类,约定该接口的接口标识;
在应用程序安装运行后,服务进程将其实现类中注解的接口注册信息注册到接口库,允许客户进程与自身基于操作系统进程通信机制进行绑定通信;
当客户进程创建某个接口时,解析该接口的注解获得接口标识,驱动服务进程查询接口库中的接口注册信息确定与该接口标识相应的实现类,实例化该实现类生成实例对象,返回该实例对象的对象标识;
当客户进程调用其已创建的接口的方法时,通过调用携带所述对象标识的代理对象,间接调用服务进程中相应的实现类对象,执行其中的内建方法,获取返回的结果数据。


2.根据权利要求1所述的方法,其特征在于:
服务进程在实例化实现类时,为该实现类的实例对象分配对象标识,将对象标识与实例对象的对应关系存储到接口库的接口注册信息中,将该对象标识提供给客户进程创建代理对象,代理对象发生代理调用时,提供该对象标识给服务进程,以供服务进程查询接口库的接口注册信息而确定要调用的具体实例对象。


3.根据权利要求1所述的方法,其特征在于:
应用程序中服务进程的接口类和客户进程实现类均协议定义了接口的内建方法的方法标识,该方法标识在应用程序运行后被作为接口注册信息注册到所述接口库,且在客户进程通过代理对象调用该内建方法时,被客户进程传输给服务进程,以供服务进程查询接口库中的接口注册信息而确定相应的实例对象中的内建方法。


4.根据权利要求1至3中任意一项所述的方法,其特征在于:
客户进程向服务进程提供的接口标识被以第一格式封装,而在服务进程按照相应的格式协议予以解析提取;服务进程向客户进程提供的方法标识和对象标识被以第二格式封装,而客户进程按照相应的格式协议予以解析提取。


5.根据权利要求1所述的方法,其特征在于:所述的注解按照Java注解技术实现,所述代理对象按照Java代理技术实现。


6.根据权利要求1所述的方法,其特征在于:服务进程负责向操作系统注册服务组件,供客户进程与之绑定通信,在其彼此解除绑定后,服务进程删除因客户进程产生的所述接口库中的接口注册信息。


7.一种跨进程接口调用执行方法,其特征在于,该方法包括如下步骤:
客户进程根据其业务模块中的接口类,调用其解析模块解析出该接口类预先注解的接口标识,将其封装成请求格式,向服务进程发起接口创建请求;
服务进程接收该接口创建请求,解析该请求获得接口标识,查询接口库确定相应的实现类后执行该实现类的实例化创建操作,产生相应的实例对象;
服务进程将实例对象及其对象标识的对应关系存储于接口库中,将该对象标识封装成结果数据返回给客户进程;
客户进程接收所述结果数据,解析出其中的对象标识形成携带该对象标识的代理对象,将之返回给客户进程的业务模块,以供所述业务模块通过调用所述代理对象而实现调用所述实例对象。


8.根据权利要求7所述的方法,其特征在于,客户进程响应于其业务模块的需求通过调用所述代理对象而实现调用所述实例对象的过程,包括如下具体步骤:
客户进程的业务模块发起所述接口类中方法的接口调用请求;
所述代理对象代理调用服务进程中的实例对象的相应的内建方法,获得该内建方法运行后的结果数据;
所述代理对象将所述结果数据返回给所述的业务模块。

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

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

1