CN106547567A - 一种安卓系统中多业务下进程间通信系统及其实现方法 - Google Patents
一种安卓系统中多业务下进程间通信系统及其实现方法 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-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调用需要的进程服务提供的方法。
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)
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)
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的应用层的进程间通信方法及基础应用通信系统 |
-
2016
- 2016-11-25 CN CN201611052354.6A patent/CN106547567A/zh not_active Withdrawn
Patent Citations (3)
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)
Title |
---|
佚名: "Android IPC机制(四):细说Binder连接池", 《HTTPS://BLOG.CSDN.NET/A553181867/ARTICLE/DETAILS/51150867》 * |
Cited By (22)
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 |