CN106547567A - 一种安卓系统中多业务下进程间通信系统及其实现方法 - Google Patents

一种安卓系统中多业务下进程间通信系统及其实现方法 Download PDF

Info

Publication number
CN106547567A
CN106547567A CN201611052354.6A CN201611052354A CN106547567A CN 106547567 A CN106547567 A CN 106547567A CN 201611052354 A CN201611052354 A CN 201611052354A CN 106547567 A CN106547567 A CN 106547567A
Authority
CN
China
Prior art keywords
service
binder
classes
interface
user client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN201611052354.6A
Other languages
English (en)
Inventor
张海霞
王瑞刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN201611052354.6A priority Critical patent/CN106547567A/zh
Publication of CN106547567A publication Critical patent/CN106547567A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种安卓系统中多业务下进程间通信系统及其实现方法,包括服务使用者Client、Binder连接池的管理者Service、进程服务对应的AIDL文件和进程服务对应的Binder类;通过单个Servicer组件管理不同进程对应的Binder服务。增加一个Binder服务,将其设置为Binder连接池,通过在客户端绑定此Binder连接池的服务,转换成接口,在需要调用某个进程的服务时,通过Binder连接池的接口获取对应进程的服务。减少了多个AIDL接口对应多个重量级组件Service带来的系统的开销,提升了系统性能。

Description

一种安卓系统中多业务下进程间通信系统及其实现方法
技术领域
本发明涉及一种安卓系统中多业务下进程间通信系统及其实现方法,属于安卓多业务下进程间通信优化技术领域。
背景技术
Android系统为应用开发者提供了多种进程间通信的方法,例如:ContentProvider、Messenger、AIDL(Android Interface Definition Language)等。而支持它们能够正常使用的原因是安卓在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,Android Interface Definition Language,即Android接口定义语言。
2、IDE(Integrated Development Environment)集成开发环境,是用于提供程序开发环境的
应用程序。例如开发android应用的IDE工具就是Android Studio。
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需要某个进程服务时,通过向Binder连接池的管理者Service提供具有该进程服务唯一标识的标识码,Binder连接池的管理者Service向服务使用者Client返回该进程服务对应的Binder类,服务使用者Client得到该进程服务对应的Binder类后,通过类型转换将该远程对象Binder转换成对应的服务接口,服务使用者Client使用服务接口提供的方法,实现进程间通信。
实施例2
实施例1所述的安卓系统中多业务下进程间通信系统的实现方法,如图2所示,具体步骤包括:
(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调用需要的进程服务提供的方法。如图4所示。

Claims (2)

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类用于通过参数binderCode查询所需要的进程服务,并返回所需要的进程服务的具体实现类的远程对象Binder,binderCode是指进程服务唯一标识的标识码;
(2)建立各个进程服务对应的AIDL文件,利用IDE工具自动生成各个进程服务对应的AIDL文件对应的Java接口,同时创建对应的Java接口的Binder类;该Binder类用于实现对应的进程服务对应的业务;
(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调用需要的进程服务提供的方法。
CN201611052354.6A 2016-11-25 2016-11-25 一种安卓系统中多业务下进程间通信系统及其实现方法 Withdrawn CN106547567A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611052354.6A CN106547567A (zh) 2016-11-25 2016-11-25 一种安卓系统中多业务下进程间通信系统及其实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611052354.6A CN106547567A (zh) 2016-11-25 2016-11-25 一种安卓系统中多业务下进程间通信系统及其实现方法

Publications (1)

Publication Number Publication Date
CN106547567A true CN106547567A (zh) 2017-03-29

Family

ID=58395794

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611052354.6A Withdrawn CN106547567A (zh) 2016-11-25 2016-11-25 一种安卓系统中多业务下进程间通信系统及其实现方法

Country Status (1)

Country Link
CN (1) CN106547567A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107172197A (zh) * 2017-06-26 2017-09-15 努比亚技术有限公司 一种业务处理方法、系统及设备
CN107391272A (zh) * 2017-06-26 2017-11-24 北京五八信息技术有限公司 多进程数据交互的方法和终端
CN109117279A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 电子装置及其限制进程间通信的方法、存储介质
CN109933443A (zh) * 2019-03-07 2019-06-25 腾讯科技(深圳)有限公司 进程间通信方法、装置、计算机设备及可读存储介质
CN109995861A (zh) * 2019-03-29 2019-07-09 上海势航网络科技有限公司 车载系统应用与车载外围器件的中继通信方法及系统
CN110275790A (zh) * 2019-06-26 2019-09-24 北京金山安全软件有限公司 应用程序中的进程间通信同步回调方法、系统及相关设备
CN110377438A (zh) * 2019-07-22 2019-10-25 广州小鹏汽车科技有限公司 跨进程通信接口的路由方法、装置和系统
CN110569130A (zh) * 2019-07-29 2019-12-13 华为技术有限公司 一种跨进程通信方法、装置及设备
CN111176374A (zh) * 2019-12-09 2020-05-19 北京点石经纬科技有限公司 基于安卓系统实现副屏旋转的控制方法
CN111338828A (zh) * 2020-03-24 2020-06-26 广州华多网络科技有限公司 终端设备及其应用程序接口调用控制方法
CN111443961A (zh) * 2020-03-24 2020-07-24 广州华多网络科技有限公司 终端设备及其跨进程通信方法
CN113821363A (zh) * 2021-11-25 2021-12-21 北京鲸鲮信息系统技术有限公司 一种进程间通讯方法及系统
CN114647403A (zh) * 2022-03-28 2022-06-21 重庆长安汽车股份有限公司 一种应用于地图开发的组件化系统、实现方法及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103353839A (zh) * 2013-06-07 2013-10-16 杭州竞天数码科技有限公司 一种基于Android系统的通用串行设备通信模块
CN103425225A (zh) * 2012-05-16 2013-12-04 腾讯科技(深圳)有限公司 便携数据设备操作系统中的应用程序装置及其运行方法
CN103902390A (zh) * 2014-03-12 2014-07-02 深圳创维-Rgb电子有限公司 基于Android的应用层的进程间通信方法及基础应用通信系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425225A (zh) * 2012-05-16 2013-12-04 腾讯科技(深圳)有限公司 便携数据设备操作系统中的应用程序装置及其运行方法
CN103353839A (zh) * 2013-06-07 2013-10-16 杭州竞天数码科技有限公司 一种基于Android系统的通用串行设备通信模块
CN103902390A (zh) * 2014-03-12 2014-07-02 深圳创维-Rgb电子有限公司 基于Android的应用层的进程间通信方法及基础应用通信系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
佚名: "Android IPC机制(四):细说Binder连接池", 《HTTPS://BLOG.CSDN.NET/A553181867/ARTICLE/DETAILS/51150867》 *

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391272A (zh) * 2017-06-26 2017-11-24 北京五八信息技术有限公司 多进程数据交互的方法和终端
CN107172197A (zh) * 2017-06-26 2017-09-15 努比亚技术有限公司 一种业务处理方法、系统及设备
CN109117279B (zh) * 2018-06-29 2020-10-02 Oppo(重庆)智能科技有限公司 电子装置及其限制进程间通信的方法、存储介质
CN109117279A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 电子装置及其限制进程间通信的方法、存储介质
CN109933443A (zh) * 2019-03-07 2019-06-25 腾讯科技(深圳)有限公司 进程间通信方法、装置、计算机设备及可读存储介质
CN109933443B (zh) * 2019-03-07 2021-06-25 腾讯科技(深圳)有限公司 进程间通信方法、装置、计算机设备及可读存储介质
CN109995861A (zh) * 2019-03-29 2019-07-09 上海势航网络科技有限公司 车载系统应用与车载外围器件的中继通信方法及系统
CN109995861B (zh) * 2019-03-29 2022-04-01 上海势航网络科技有限公司 车载系统应用与车载外围器件的中继通信方法及系统
CN110275790A (zh) * 2019-06-26 2019-09-24 北京金山安全软件有限公司 应用程序中的进程间通信同步回调方法、系统及相关设备
CN110377438A (zh) * 2019-07-22 2019-10-25 广州小鹏汽车科技有限公司 跨进程通信接口的路由方法、装置和系统
CN110569130B (zh) * 2019-07-29 2021-12-14 华为技术有限公司 一种跨进程通信方法、装置及设备
WO2021018005A1 (zh) * 2019-07-29 2021-02-04 华为技术有限公司 一种跨进程通信方法、装置及设备
CN110569130A (zh) * 2019-07-29 2019-12-13 华为技术有限公司 一种跨进程通信方法、装置及设备
US11853820B2 (en) 2019-07-29 2023-12-26 Huawei Technologies Co., Ltd. Cross-process communication method, apparatus, and device
CN111176374A (zh) * 2019-12-09 2020-05-19 北京点石经纬科技有限公司 基于安卓系统实现副屏旋转的控制方法
CN111443961A (zh) * 2020-03-24 2020-07-24 广州华多网络科技有限公司 终端设备及其跨进程通信方法
CN111338828A (zh) * 2020-03-24 2020-06-26 广州华多网络科技有限公司 终端设备及其应用程序接口调用控制方法
WO2021190469A1 (zh) * 2020-03-24 2021-09-30 广州华多网络科技有限公司 终端设备及其应用程序接口调用控制方法
CN111443961B (zh) * 2020-03-24 2023-04-11 广州方硅信息技术有限公司 终端设备及其跨进程通信方法
CN113821363A (zh) * 2021-11-25 2021-12-21 北京鲸鲮信息系统技术有限公司 一种进程间通讯方法及系统
CN113821363B (zh) * 2021-11-25 2022-03-01 北京鲸鲮信息系统技术有限公司 一种进程间通讯方法及系统
CN114647403A (zh) * 2022-03-28 2022-06-21 重庆长安汽车股份有限公司 一种应用于地图开发的组件化系统、实现方法及存储介质

Similar Documents

Publication Publication Date Title
CN106547567A (zh) 一种安卓系统中多业务下进程间通信系统及其实现方法
CN105447643B (zh) 一种面向云计算平台的科学工作流系统及方法
CN110377438B (zh) 跨进程通信接口的路由方法、装置和系统
CN109729149A (zh) 一种基于注解的微服务框架实现方法
CN111552471A (zh) 混合云环境下的任务编排方法及系统
CN104573115A (zh) 支持多类型数据库操作的集成接口的实现方法及系统
US10635408B2 (en) Method and apparatus for enabling agile development of services in cloud computing and traditional environments
CN103440376A (zh) 基于组件的分布集中一体化仿真系统运行支撑平台
CN101782848B (zh) 仿真软件界面集成方法
CN101056429A (zh) 通用业务系统及其实现方法
EP2328301A1 (en) Method and apparatus for managing the authority in workflow component based on authority component
CN105760498A (zh) 一种xml数据与关系型数据库匹配的实现方法
CN102316169A (zh) 一种实现快速业务聚合的方法及通用业务平台
CN110750553A (zh) 一种在业务管理系统中对数据进行自定义导出的方法
CA2498539A1 (en) A system and method for building component applications using metadata defined mapping between message and data domains
CN105549964A (zh) 页面的显示方法和系统
CN105847319A (zh) 一种移动终端网络请求方法及系统
CN106227545B (zh) 开发平台的设计方法及装置
CN117539433B (zh) 一种基于模型驱动架构的微服务设计方法
CN102523128B (zh) 一种远程数据传输中的数据同步方法
CN112214236A (zh) 一种软件快速开发平台应用架构搭建管理系统的方法
CN111913721B (zh) 自动化部署方法、装置、设备及存储介质
CN109614096B (zh) 一种基于uml需求建模过程用例与活动转换的方法
CN113656433A (zh) 实体对象扩展方法、装置、电子设备和存储介质
CN110990000B (zh) Mvc模式设计模型层的数据请求处理方法、装置及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20170329