跨进程数据传输方法、装置、电子设备和存储介质制造方法及图纸

技术编号:28373073 阅读:19 留言:0更新日期:2021-05-08 00:00
本申请公开了一种跨进程数据传输方法、装置及电子设备、存储介质,该方法应用于安卓操作系统中的数据传输层,所述方法包括:通过第一进程中实现的数据传输接口,接收第一进程的传输数据;将传输数据写入到内存空间中;通过第二进程中实现的数据传输接口,接收第二进程对传输数据的获取请求;根据获取请求,从内存空间中提取传输数据并发送给第二进程;其中,第一进程中实现的数据传输接口和第二进程中实现的数据传输接口均是基于数据传输层定义的数据传输接口实现的。本申请实施例的跨进程数据传输方法通过在进程中设置数据传输接口,一次通信连接就可以实现数据的双向传递,改善了数据的传递方向及传递效率。

【技术实现步骤摘要】
跨进程数据传输方法、装置、电子设备和存储介质
本申请涉及数据传输
,具体涉及一种跨进程数据传输方法、装置、电子设备和存储介质。
技术介绍
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。安卓(Android)操作系统在开发过程中,基于功能隔离、进程安全、进程保活等等考虑,经常需要为应用划分进程,然而这种操作不得不面临跨进程通信和跨进程共享数据的挑战。跨进程通信的目的在于实现进程间数据的分享以及交互。最典型的跨进程通信的应用场景是剪切板上数据的复制与粘贴,但这种跨进程通信的方式仅限于一些String类数据的传送。在Android系统中,对于进程间数据的传输限于AIDL(AndroidInterfaceDefinitionLanguage,即Android接口定义语言)方式,但该方式下的数据传输限于基本的数据类型,如int、long、list、String等,如果需要传送一个对象的话,则需要将类进行序列化,如进行Parcelable化(可打包化)或Serializable(序列化)化,但Parcelable化或Serializable化又需要额外实现序列化的接口。而且AIDL属于单向通信,即一套AIDL方案仅允许进程A向进程B进行传送,但要使进程B向进程A传送的话则需要另一套AIDL方案。
技术实现思路
鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的跨进程数据传输方法、装置、电子设备和存储介质。依据本申请的第一方面,提供了一种跨进程数据传输方法,所述方法应用于安卓操作系统中的数据传输层,所述方法包括:通过第一进程中实现的数据传输接口,接收所述第一进程的传输数据;将所述传输数据写入到内存空间中;通过第二进程中实现的数据传输接口,接收所述第二进程对所述传输数据的获取请求;根据所述获取请求,从所述内存空间中提取所述传输数据并发送给所述第二进程;其中,所述第一进程中实现的数据传输接口和所述第二进程中实现的数据传输接口均是基于所述数据传输层定义的数据传输接口实现的。可选地,所述将所述传输数据写入到内存空间中包括:对所述传输数据进行解析,根据解析结果确定所述传输数据的数据类型,其中所述数据类型包括基础数据和/或对象数据;根据所述传输数据的数据类型对所述传输数据进行封装,得到已封装的传输数据;将所述已封装的传输数据写入所述内存空间中。可选地,所述根据所述传输数据的数据类型对所述传输数据进行封装,得到已封装的传输数据包括:若所述传输数据中包括所述基础数据和所述对象数据,则分别对所述基础数据和所述对象数据进行封装。可选地,所述对所述对象数据进行封装包括:确定所述对象数据是否已经序列化;若所述对象数据已经序列化,则直接对所述对象数据进行封装;若所述对象数据没有序列化,则记录所述对象数据的对象格式,并对所述对象数据进行封装,以将所述对象数据的对象格式和已封装的对象数据均写入所述内存空间中。可选地,所述根据所述获取请求,从所述内存空间中提取所述传输数据并发送给所述第二进程包括:根据所述获取请求,从所述内存空间中获取所述传输数据;对所述传输数据进行解析,根据解析结果确定所述传输数据的数据类型,其中所述数据类型包括基础数据和/或对象数据;根据所述传输数据的数据类型对解析后的传输数据进行还原,得到已还原的传输数据;通过所述第二进程中实现的数据传输接口,将所述已还原的传输数据发送给所述第二进程。可选地,所述根据所述传输数据的数据类型对解析后的传输数据进行还原,得到已还原的传输数据包括:若所述传输数据中包括所述基础数据和所述对象数据,则分别对所述基础数据和所述对象数据进行还原。可选地,所述对所述对象数据进行还原包括:从所述内存空间中获取所述对象数据的对象格式;根据所述对象数据的对象格式对所述对象数据进行还原。可选地,在通过第一进程中实现的数据传输接口,接收所述第一进程的传输数据之后,所述方法还包括:与所述第一进程进行握手校验;若握手校验成功,则将所述传输数据写入到内存空间中;在通过第二进程中实现的数据传输接口,接收所述第二进程对所述传输数据的获取请求之后,所述方法还包括:与所述第二进程进行握手校验;若握手校验成功,则根据所述获取请求,从所述内存空间中提取所述传输数据并发送给所述第二进程。可选地,所述方法还包括:若接收到所述第一进程的传输数据,则在所述安卓操作系统中开辟内存空间,以将所述传输数据写入到所述内存空间;若与所述第二进程握手校验失败,或者所述第二进程的返回参数为数据传输成功,则释放所述内存空间。依据本申请的第二方面,提供了一种跨进程数据传输装置,所述装置应用于安卓操作系统中的数据传输层,所述装置包括:第一接收单元,用于通过第一进程中实现的数据传输接口,接收所述第一进程的传输数据;第一写入单元,用于将所述传输数据写入到内存空间中;第二接收单元,用于通过第二进程中实现的数据传输接口,接收所述第二进程对所述传输数据的获取请求;第一发送单元,用于根据所述获取请求,从所述内存空间中提取所述传输数据并发送给所述第二进程;其中,所述第一进程中实现的数据传输接口和所述第二进程中实现的数据传输接口均是基于所述数据传输层定义的数据传输接口实现的。依据本申请的第三方面,提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如上述任一所述的跨进程数据传输方法。依据本申请的第四方面,提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现如上述任一所述的跨进程数据传输方法。由上述可知,本申请的技术方案取得了如下的技术效果:本申请实施例的跨进程数据传输方法主要应用于安卓操作系统中的数据传输层,针对任意两个需要进行数据传输的第一进程和第二进程,在第一进程和第二进程中分别实现了用于进行数据传输的数据传输接口,该数据传输接口是基于数据传输层定义的数据传输接口实现的。在进行跨进程数据传输时,先通过第一进程中实现的数据传输接口,接收第一进程的传输数据;然后将传输数据写入到安卓操作系统的内存空间中;之后通过第二进程中实现的数据传输接口,接收第二进程对传输数据的获取请求;最后根据获取请求,从内存空间中提取传输数据并发送给第二进程。本申请实施例的跨进程数据传输方法通过在进程中设置数据传输接口,该数据传输接口既支持数据发送,也支持数据接收;既支持int、long、list、String等基本类型的数据传输,也支持类对象等复杂类型的数据传输,使得数据传输的实现更为简单,且一次通信连接就可以实现数据的双向传递,改善了本文档来自技高网...

【技术保护点】
1.一种跨进程数据传输方法,其特征在于,所述方法应用于安卓操作系统中的数据传输层,所述方法包括:/n通过第一进程中实现的数据传输接口,接收所述第一进程的传输数据;/n将所述传输数据写入到内存空间中;/n通过第二进程中实现的数据传输接口,接收所述第二进程对所述传输数据的获取请求;/n根据所述获取请求,从所述内存空间中提取所述传输数据并发送给所述第二进程;/n其中,所述第一进程中实现的数据传输接口和所述第二进程中实现的数据传输接口均是基于所述数据传输层定义的数据传输接口实现的。/n

【技术特征摘要】
1.一种跨进程数据传输方法,其特征在于,所述方法应用于安卓操作系统中的数据传输层,所述方法包括:
通过第一进程中实现的数据传输接口,接收所述第一进程的传输数据;
将所述传输数据写入到内存空间中;
通过第二进程中实现的数据传输接口,接收所述第二进程对所述传输数据的获取请求;
根据所述获取请求,从所述内存空间中提取所述传输数据并发送给所述第二进程;
其中,所述第一进程中实现的数据传输接口和所述第二进程中实现的数据传输接口均是基于所述数据传输层定义的数据传输接口实现的。


2.根据权利要求1所述的方法,其特征在于,所述将所述传输数据写入到内存空间中包括:
对所述传输数据进行解析,根据解析结果确定所述传输数据的数据类型,其中所述数据类型包括基础数据和/或对象数据;
根据所述传输数据的数据类型对所述传输数据进行封装,得到已封装的传输数据;
将所述已封装的传输数据写入所述内存空间中。


3.根据权利要求2所述的方法,其特征在于,所述根据所述传输数据的数据类型对所述传输数据进行封装,得到已封装的传输数据包括:
若所述传输数据中包括所述基础数据和所述对象数据,则分别对所述基础数据和所述对象数据进行封装。


4.根据权利要求3所述的方法,其特征在于,所述对所述对象数据进行封装包括:
确定所述对象数据是否已经序列化;
若所述对象数据已经序列化,则直接对所述对象数据进行封装;
若所述对象数据没有序列化,则记录所述对象数据的对象格式,并对所述对象数据进行封装,以将所述对象数据的对象格式和已封装的对象数据均写入所述内存空间中。


5.根据权利要求1所述的方法,其特征在于,所述根据所述获取请求,从所述内存空间中提取所述传输数据并发送给所述第二进程包括:
根据所述获取请求,从所述内存空间中获取所述传输数据;
对所述传输数据进行解析,根据解析结果确定所述传输数据的数据类型,其中所述数据类型包括基础数据和/或对象数据;
根据所述传输数据的数据类型对解析后的传输数据进行还原,得到已还原的传输数据;
通过所述第二进程中实现的数据传输接口,将所述已还原的传输数据发送给所述第二进程。


6.根据权利要求5所述的方法,其特征在于,所述根据所述传输数据的数据类型对解析后的传输数据进行还原,得到已还原的传输数据...

【专利技术属性】
技术研发人员:李廷蔡蓉
申请(专利权)人:重庆创通联智物联网有限公司
类型:发明
国别省市:重庆;50

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

1