CN107391272A - 多进程数据交互的方法和终端 - Google Patents
多进程数据交互的方法和终端 Download PDFInfo
- Publication number
- CN107391272A CN107391272A CN201710494816.8A CN201710494816A CN107391272A CN 107391272 A CN107391272 A CN 107391272A CN 201710494816 A CN201710494816 A CN 201710494816A CN 107391272 A CN107391272 A CN 107391272A
- Authority
- CN
- China
- Prior art keywords
- aidl
- terminal
- services
- binding relationship
- binder
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明实施例提供一种多进程数据交互的方法和终端。本发明多进程数据交互的方法,包括:终端分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系;所述终端根据所述绑定关系获取所述AIDL服务返回的SP的binder对象;所述终端在运行期间调用任一进程通过所述SP的binder对象访问SP数据。本发明实施例可以消除Cursor相关的操作造成的APP崩溃和应用无响应等问题,有效提升用户使用体验。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种多进程数据交互的方法和终端。
背景技术
目前很多大型互联网公司采用同一平台,多业务线并行方式进行开发,具体可以通过“平台插件化”加“多进程”的方式。但是引入这种开发模式,业务线之间、业务线与平台之间的数据共享与读写访问却是安卓(android)系统性能的一大瓶颈。
ContentProvider可以实现多进程之间共享数据。具体的,ContentProvider封装SP(SharedPreferences)支持多进程访问。由ContentProvider对外提供访问接口,其他进程调用相关接口后,通过Binder访问ContentProvider。ContentProvider内部调用SP进行数据访问,之后封装数据返回。
ContentProvider封装SP方式是目前最为广泛使用的方案。但是仍然有如下问题:1)APP(Application)崩溃。具体的,数据访问封装类Cursor分配于共享内存中,分配空间有限,若空间不足,则直接崩溃。2)APP出现应用无响应(Application Not Responding,ANR)。Cursor构造方法相当复杂,分配Cursor空间与相关初始化均是耗时操作,若主线程读取,很容易造成ANR。
发明内容
本发明实施例提供一种多进程数据交互的方法和终端,以消除Cursor相关的操作造成的APP崩溃和应用无响应等问题。
第一方面,本发明实施例提供一种多进程数据交互的方法,包括:
终端分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系;
所述终端根据所述绑定关系获取所述AIDL服务返回的SP的binder对象;
所述终端在运行期间调用任一进程通过所述SP的binder对象访问SP数据。
结合第一方面,在第一方面的一种可能的实现方式中,所述AIDL服务为所述终端的服务管理器创建的服务,所述AIDL服务用于创建AIDL实现类,所述AIDL实现类用于实现AIDL文件,将获取和设置方法实现为所述SP数据的访问。
结合第一方面或者第一方面的一种可能的实现方式,在第一方面的另一种可能的实现方式中,所述终端根据所述绑定关系获取所述AIDL服务返回的SP的binder对象,包括:
所述终端根据所述绑定关系获取所述AIDL服务在创建AIDL实现类完成后返回的SP的binder对象。
结合第一方面或者第一方面的任一种可能的实现方式,在第一方面的另一种可能的实现方式中,所述AIDL文件用于提供获取和设置方法。
结合第一方面或者第一方面的任一种可能的实现方式,在第一方面的另一种可能的实现方式中,所述终端分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系,包括:
所述终端在每个进程初始化时,为所述每个进程建立与AIDL服务之间的绑定关系。
第二方面,本发明实施例提供一种终端,包括:
绑定模块,用于分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系;
接收模块,用于根据所述绑定关系获取所述AIDL服务返回的SP的binder对象;
数据访问模块,用于在运行期间调用任一进程通过所述SP的binder对象访问SP数据。
结合第二方面,在第二方面的一种可能的实现方式中,所述AIDL服务为所述终端的服务管理器创建的服务,所述AIDL服务用于创建AIDL实现类,所述AIDL实现类用于实现AIDL文件,将获取和设置方法实现为所述SP数据的访问。
结合第二方面或者第二方面的一种可能的实现方式,在第二方面的另一种可能的实现方式中,所述接收模块,用于根据所述绑定关系获取所述AIDL服务返回的SP的binder对象,包括:
根据所述绑定关系获取所述AIDL服务在创建AIDL实现类完成后返回的SP的binder对象。
结合第二方面或者第二方面的一种可能的实现方式,在第二方面的另一种可能的实现方式中,所述AIDL文件用于提供获取和设置方法。
结合第二方面或者第二方面的一种可能的实现方式,在第二方面的另一种可能的实现方式中,所述绑定模块,用于分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系,包括:
在每个进程初始化时,为所述每个进程建立与AIDL服务之间的绑定关系。
本发明实施例多进程数据交互的方法和终端,通过分别为多个进程建立与AIDL服务之间的绑定关系,根据所述绑定关系获取所述AIDL服务返回的SP的binder对象,在运行期间调用任一进程通过所述SP的binder对象访问SP数据,从而实现基于AIDL的多进程数据交互的方法,以实现无需进行Cursor相关的操作,直接通过SP进行内存数据读取,消除了Cursor相关的操作造成的APP崩溃和应用无响应等问题,有效提升用户使用体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的多进程数据交互的方法的应用场景示意图;
图2为本发明实施例的一种多进程数据交互的方法的流程图;
图3为本发明实施例的另一种多进程数据交互的方法的流程图;
图4为本发明实施例的一种终端结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的多进程数据交互的方法的应用场景示意图,如图1所示,包括终端101和服务器102,其中,终端设备101可以是移动电话(mobilephone)、掌上电脑(personal digital assistant,PDA)、智能手机、笔记本型电脑、计算机、触摸屏设备、无线传感器或消费电子设备等设备。在终端101上安装有应用程序,且应用程序的服务器102可以向终端101中安装的应用程序提供服务。不同的应用程序可以有不同的功能。应用程序可以执行本发明实施例提供的多进程数据交互的方法,以实现无需进行Cursor相关的操作,直接通过SP进行内存数据读取,消除了Cursor相关的操作造成的APP崩溃和应用无响应等问题,有效提升用户使用体验。
本文所涉及的应用程序可以有多个业务,每个业务以一个进程的方式在终端11上运行。举例而言,应用程序可以有业务A、业务B和业务C,业务A可以通过进程1在终端101上运行,业务B可以通过进程2在终端101上运行,业务C可以通过进程3在终端101上运行。一个应用程序的不同业务可以使用相同的用户数据,即该用户数据可以在不同进程(例如进程1、进程2和进程3)之间共享,该用户数据可以包括但不限于手机号、用户名、国际移动用户识别码(International Mobile Subscriber Identification Number,简称IMSI)等。
本文所涉及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本发明实施例提供的多进程数据交互的方法的具体实现方式可以参见下述实施例的解释说明。
图2为本发明实施例的一种多进程数据交互的方法的流程图,如图2所示,本实施例的方法可以包括:
步骤101、终端分别为多个进程建立与AIDL服务之间的绑定关系。
其中,安卓接口定义语言(Android Interface Definition Language,简称AIDL)具体指Android平台下描述进程间通信的接口描述语言,可以简化进程间数据格式交换和数据代码的交换,用于实现Android平台下进程间的通信。具体可以是,终端上的应用程序将该应用程序的多个进程分别与AIDL服务绑定。
步骤102、所述终端根据所述绑定关系获取所述AIDL服务返回的SP的binder对象。
其中,SP(SharedPreferences)具体指Android提供的轻量数据存储方案,以键-值(Key-Value)形式将数据存储于文件中。本发明实施例的AIDL服务可以向终端上的应用程序提供SP的binder对象,该SP的binder对象即为SP数据的访问接口。
步骤103、所述终端在运行期间调用任一进程通过所述SP的binder对象访问SP数据。
具体的,终端上的应用程序在运行期间的任意进程通过该SP的binder对象访问SP数据。
具体的,SP数据可以是如上所述的用户数据,当然也可以是其他数据,本发明不以此作为限制。
本实施例,通过分别为多个进程建立与AIDL服务之间的绑定关系,根据所述绑定关系获取所述AIDL服务返回的SP的binder对象,在运行期间调用任一进程通过所述SP的binder对象访问SP数据,从而实现基于AIDL的多进程数据交互的方法,以实现无需进行Cursor相关的操作,直接通过SP进行内存数据读取,消除了Cursor相关的操作造成的APP崩溃和应用无响应等问题,有效提升用户使用体验。
并且,本发明实施例的方法对多进行的SP数据读取速度有明显提高。
下面采用几个具体的实施例,对图2所示方法实施例的技术方案进行详细说明。
图3为本发明实施例的另一种多进程数据交互的方法的流程图,如图3所示,本实施例的方法可以包括:
步骤201、终端在每个进程初始化时,为所述每个进程建立与AIDL服务之间的绑定关系。
具体的,所述AIDL服务为所述终端的服务管理器创建的服务,所述AIDL服务用于创建AIDL实现类,所述AIDL实现类用于实现AIDL文件,将获取和设置方法(get/set方法)实现为所述SP数据的访问。所述AIDL文件用于提供获取和设置方法(get/set方法)。
步骤202、所述终端根据所述绑定关系获取所述AIDL服务在创建AIDL实现类完成后返回的SP的binder对象。
步骤203、所述终端在运行期间调用任一进程通过所述SP的binder对象访问SP数据。
并且,本发明实施例的方法对多进行的SP数据读取速度有明显提高。具体的可以参见表1的结果对比。
表1结果对比表
由表1可知,本发明实施例的方法相对于现有ContentProvider方式,读操作提升约82%,写操作提升约12倍。
本实施例,通过分别为多个进程建立与AIDL服务之间的绑定关系,根据所述绑定关系获取所述AIDL服务返回的SP的binder对象,在运行期间调用任一进程通过所述SP的binder对象访问SP数据,从而实现基于AIDL的多进程数据交互的方法,以实现无需进行Cursor相关的操作,直接通过SP进行内存数据读取,消除了Cursor相关的操作造成的APP崩溃和应用无响应等问题,有效提升用户使用体验。
图4为本发明实施例的一种终端结构示意图,如图4所示,本实施例的装置可以包括:绑定模块11、接收模块12和数据访问模块13,其中,绑定模块11用于分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系,接收模块12用于根据所述绑定关系获取所述AIDL服务返回的SP的binder对象,数据访问模块13用于在运行期间调用任一进程通过所述SP的binder对象访问SP数据。
本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例还提供另一种终端,该终端采用与图4所示实施例相同的结构,本实施例的接收模块12,用于根据所述绑定关系获取所述AIDL服务返回的SP的binder对象,具体包括:根据所述绑定关系获取所述AIDL服务在创建AIDL实现类完成后返回的SP的binder对象。
可选的,所述AIDL服务为所述终端的服务管理器创建的服务,所述AIDL服务用于创建AIDL实现类,所述AIDL实现类用于实现AIDL文件,将获取和设置方法实现为所述SP数据的访问。
可选的,所述AIDL文件用于提供获取和设置方法。
所述绑定模块11,用于分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系,具体可以包括:在每个进程初始化时,为所述每个进程建立与AIDL服务之间的绑定关系。
本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种多进程数据交互的方法,其特征在于,包括:
终端分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系;
所述终端根据所述绑定关系获取所述AIDL服务返回的SP的binder对象;
所述终端在运行期间调用任一进程通过所述SP的binder对象访问SP数据。
2.根据权利要求1所述的方法,其特征在于,所述AIDL服务为所述终端的服务管理器创建的服务,所述AIDL服务用于创建AIDL实现类,所述AIDL实现类用于实现AIDL文件,将获取和设置方法实现为所述SP数据的访问。
3.根据权利要求2所述的方法,其特征在于,所述终端根据所述绑定关系获取所述AIDL服务返回的SP的binder对象,包括:
所述终端根据所述绑定关系获取所述AIDL服务在创建AIDL实现类完成后返回的SP的binder对象。
4.根据权利要求3所述的方法,其特征在于,所述AIDL文件用于提供获取和设置方法。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述终端分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系,包括:
所述终端在每个进程初始化时,为所述每个进程建立与AIDL服务之间的绑定关系。
6.一种终端,其特征在于,包括:
绑定模块,用于分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系;
接收模块,用于根据所述绑定关系获取所述AIDL服务返回的SP的binder对象;
数据访问模块,用于在运行期间调用任一进程通过所述SP的binder对象访问SP数据。
7.根据权利要求6所述的终端,其特征在于,所述AIDL服务为所述终端的服务管理器创建的服务,所述AIDL服务用于创建AIDL实现类,所述AIDL实现类用于实现AIDL文件,将获取和设置方法实现为所述SP数据的访问。
8.根据权利要求7所述的终端,其特征在于,所述接收模块,用于根据所述绑定关系获取所述AIDL服务返回的SP的binder对象,包括:
根据所述绑定关系获取所述AIDL服务在创建AIDL实现类完成后返回的SP的binder对象。
9.根据权利要求8所述的终端,其特征在于,所述AIDL文件用于提供获取和设置方法。
10.根据权利要求6至9任一项所述的终端,其特征在于,所述绑定模块,用于分别为多个进程建立与安卓接口定义语言AIDL服务之间的绑定关系,包括:
在每个进程初始化时,为所述每个进程建立与AIDL服务之间的绑定关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710494816.8A CN107391272A (zh) | 2017-06-26 | 2017-06-26 | 多进程数据交互的方法和终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710494816.8A CN107391272A (zh) | 2017-06-26 | 2017-06-26 | 多进程数据交互的方法和终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107391272A true CN107391272A (zh) | 2017-11-24 |
Family
ID=60333202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710494816.8A Pending CN107391272A (zh) | 2017-06-26 | 2017-06-26 | 多进程数据交互的方法和终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391272A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352611A (zh) * | 2020-03-04 | 2020-06-30 | 四川长虹电器股份有限公司 | 一种Android应用中实现UI与数据分离的方法 |
CN111443961A (zh) * | 2020-03-24 | 2020-07-24 | 广州华多网络科技有限公司 | 终端设备及其跨进程通信方法 |
CN111858224A (zh) * | 2019-04-25 | 2020-10-30 | 珠海格力电器股份有限公司 | 一种安卓系统中的进程监听方法及装置 |
CN111984434A (zh) * | 2020-06-23 | 2020-11-24 | 北京智慧章鱼科技有限公司 | 基于安卓系统的跨进程数据读写方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520936A (zh) * | 2011-11-30 | 2012-06-27 | 厦门雅迅网络股份有限公司 | 一种在Android上实现Socket通讯服务共享的方法 |
CN104184618A (zh) * | 2014-08-12 | 2014-12-03 | 烽火通信科技股份有限公司 | Android终端及其实现TR069网管代理的方法 |
EP2947637A1 (en) * | 2014-05-23 | 2015-11-25 | The Boeing Company | Method of predicting with high accuracy a descent trajectory described by means of the aircraft intent description language (AIDL) |
CN106547567A (zh) * | 2016-11-25 | 2017-03-29 | 山东大学 | 一种安卓系统中多业务下进程间通信系统及其实现方法 |
-
2017
- 2017-06-26 CN CN201710494816.8A patent/CN107391272A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520936A (zh) * | 2011-11-30 | 2012-06-27 | 厦门雅迅网络股份有限公司 | 一种在Android上实现Socket通讯服务共享的方法 |
EP2947637A1 (en) * | 2014-05-23 | 2015-11-25 | The Boeing Company | Method of predicting with high accuracy a descent trajectory described by means of the aircraft intent description language (AIDL) |
CN104184618A (zh) * | 2014-08-12 | 2014-12-03 | 烽火通信科技股份有限公司 | Android终端及其实现TR069网管代理的方法 |
CN106547567A (zh) * | 2016-11-25 | 2017-03-29 | 山东大学 | 一种安卓系统中多业务下进程间通信系统及其实现方法 |
Non-Patent Citations (1)
Title |
---|
任玉刚: "《Android开发艺术探索》", 30 September 2015, 电子工业出版社 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858224A (zh) * | 2019-04-25 | 2020-10-30 | 珠海格力电器股份有限公司 | 一种安卓系统中的进程监听方法及装置 |
CN111352611A (zh) * | 2020-03-04 | 2020-06-30 | 四川长虹电器股份有限公司 | 一种Android应用中实现UI与数据分离的方法 |
CN111352611B (zh) * | 2020-03-04 | 2022-02-01 | 四川长虹电器股份有限公司 | 一种Android应用中实现UI与数据分离的方法 |
CN111443961A (zh) * | 2020-03-24 | 2020-07-24 | 广州华多网络科技有限公司 | 终端设备及其跨进程通信方法 |
CN111443961B (zh) * | 2020-03-24 | 2023-04-11 | 广州方硅信息技术有限公司 | 终端设备及其跨进程通信方法 |
CN111984434A (zh) * | 2020-06-23 | 2020-11-24 | 北京智慧章鱼科技有限公司 | 基于安卓系统的跨进程数据读写方法、装置及存储介质 |
CN111984434B (zh) * | 2020-06-23 | 2024-04-02 | 北京智慧章鱼科技有限公司 | 基于安卓系统的跨进程数据读写方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101421711B (zh) | 用于资源受限设备的虚拟执行系统 | |
CN107391272A (zh) | 多进程数据交互的方法和终端 | |
CN101833467B (zh) | 一种在Android的菜单中添加菜单项的方法及设备 | |
CN109325195A (zh) | 浏览器的渲染方法和系统、计算机设备、计算机存储介质 | |
CN108572818A (zh) | 一种用户界面渲染方法及装置 | |
CN103067468B (zh) | 云调度方法及其系统 | |
US7730492B1 (en) | Method and system for running multiple virtual machines in a single process | |
CN109889875A (zh) | 通信方法、装置、终端设备和计算机可读介质 | |
CN106250104A (zh) | 一种针对服务器的远程操作系统、方法及装置 | |
CN107656729A (zh) | 列表视图的更新装置、方法及计算机可读存储介质 | |
CN104104705B (zh) | 分布式存储系统的接入方法和设备 | |
CN106357791A (zh) | 业务处理方法、装置及系统 | |
CN110018765A (zh) | 页面显示方法、装置、终端及存储介质 | |
US10788997B2 (en) | Method and device for storage management with metadata stored in disk extents in an extent pool | |
CN101706788B (zh) | 一种嵌入式文件系统的跨区访问方法 | |
CN112084446A (zh) | 一种网页编辑方法、编辑器、电子设备和可读存储介质 | |
CN102402455A (zh) | 调用动态链接库的方法和装置 | |
CN105589695A (zh) | 业务功能的调用方法及系统 | |
CN105653133A (zh) | 应用程序的扩展方法及装置 | |
CN107506200A (zh) | 一种屏幕内容切换方法、终端及计算机可读存储介质 | |
CN107391622A (zh) | 一种数据访问方法及设备 | |
CN106888264A (zh) | 一种数据交换方法和装置 | |
CN102750493A (zh) | 访问权限控制方法、装置及系统 | |
CN109857553A (zh) | 内存管理方法及装置 | |
CN109522021A (zh) | 参数回调处理方法、装置、电子设备及存储介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171124 |
|
RJ01 | Rejection of invention patent application after publication |