跨平台框架与平台交互库的交互方法及装置制造方法及图纸

技术编号:30963320 阅读:13 留言:0更新日期:2021-11-25 20:27
本申请公开了一种跨平台框架与平台交互库的交互方法及装置、存储介质、计算机设备,该方法包括:跨平台框架通过C++程序接口预先加载平台交互库;所述跨平台框架的UI线程调用所述C++程序接口,向所述平台交互库传入所述C++程序接口对应的目标C++程序的函数指针;创建新线程,通过所述新线程执行所述目标C++程序,并保存所述UI线程的上下文信息;在所述目标C++程序执行结束后,依据所述UI线程的上下文信息切换至所述UI线程,并依据所述目标C++程序的函数指针进行回调。本申请简化了平台代码交互库与跨平台框架UI之间的相互调用步骤,避免通过双向管道进行调用需要预先搭建双向管道的繁琐操作,更加简单、方便。方便。方便。

【技术实现步骤摘要】
跨平台框架与平台交互库的交互方法及装置


[0001]本申请涉及计算机
,尤其是涉及到一种跨平台框架与平台交互库的交互方法及装置、存储介质、计算机设备。

技术介绍

[0002]跨平台框架是计算机开发领域中常用的技术。现有技术中,跨平台框架与平台相关的库之间的回调是通过管道的方式实现,管道是半双工的,数据只能单向通信,需要双向通信时需要建立两个管道,通过管道返回结果时,不能直接将结果投递到UI线程,由于平台相关的代码是不知道如何将消息投递到UI的消息循环里面,所以只能先回调到跨平台框架(flutter)里面,此时才知道如何投递到UI的消息循环里,即需要二次投递消息到UI线程,使用比较麻烦,开发量大。

技术实现思路

[0003]有鉴于此,本申请提供了一种跨平台框架与平台交互库的交互方法及装置、存储介质、计算机设备。
[0004]根据本申请的一个方面,提供了一种跨平台框架与平台交互库的交互方法,包括:
[0005]跨平台框架通过C++程序接口预先加载平台交互库;
[0006]所述跨平台框架的UI线程调用所述C++程序接口,向所述平台交互库传入所述C++程序接口对应的目标C++程序的函数指针;
[0007]创建新线程,通过所述新线程执行所述目标C++程序,并保存所述UI线程的上下文信息;
[0008]在所述目标C++程序执行结束后,依据所述UI线程的上下文信息切换至所述UI线程,并依据所述目标C++程序的函数指针进行回调。
[0009]可选地,所述创建新线程之前,所述方法还包括:
[0010]判断所述目标C++程序对应的预设耗时时长是否大于预设时长阈值;
[0011]若所述目标C++程序对应的预设耗时时长大于所述预设时长阈值,则执行所述创建新线程。
[0012]可选地,所述判断所述目标C++程序对应的预设耗时时长是否大于预设时长阈值之后,所述方法还包括:
[0013]若所述目标C++程序对应的预设耗时时长小于或等于所述预设时长阈值,则通过所述UI线程执行所述目标C++程序,并保存所述UI线程的上下文信息;
[0014]在所述目标C++程序执行结束后,保持所述UI线程,并依据所述UI线程的上下文信息以及所述目标C++程序的函数指针进行回调。
[0015]可选地,所述跨平台框架包括flutter框架;所述跨平台框架通过C++程序接口预先加载平台交互库,具体包括:
[0016]引用ffi库,通过ffi库加载C++程序接口,并通过所述C++程序接口加载所述平台
交互库;
[0017]所述跨平台框架通过ffi库调用所述C++程序接口,以实现通过所述C++程序接口对所述平台交互库的调用。
[0018]可选地,所述目标C++程序包括FileHelper.so文件读取程序;
[0019]所述创建新线程,通过所述新线程执行所述目标C++程序,并保存所述UI线程的上下文信息,具体包括:
[0020]所述平台交互库保存所述UI线程的上下文信息;
[0021]所述平台交互库创建新线程,通过所述新线程执行FileHelper.so读取文件,并将执行结果保存至所述平台交互库中。
[0022]可选地,所述在所述目标C++程序执行结束后,依据所述UI线程的上下文信息切换至所述UI线程,并依据所述目标C++程序的函数指针进行回调,具体包括:
[0023]在FileHelper.so执行结束后,依据所述UI线程的上下文信息切换至所述UI线程,并依据FileHelper.so的函数指针进行回调,将所述执行结果传输至所述跨平台框架,通过预设方式对所述执行结果进行解析和/或对所述执行结果进行显示。
[0024]根据本申请的另一方面,提供了一种跨平台框架与平台交互库的交互装置,包括:
[0025]预加载模块,用于跨平台框架通过C++程序接口预先加载平台交互库;
[0026]调用模块,用于所述跨平台框架的UI线程调用所述C++程序接口,向所述平台交互库传入所述C++程序接口对应的目标C++程序的函数指针;
[0027]执行模块,用于创建新线程,通过所述新线程执行所述目标C++程序,并保存所述UI线程的上下文信息;
[0028]回调模块,用于在所述目标C++程序执行结束后,依据所述UI线程的上下文信息切换至所述UI线程,并依据所述目标C++程序的函数指针进行回调。
[0029]可选地,所述装置还包括:
[0030]判断模块,用于所述创建新线程之前,判断所述目标C++程序对应的预设耗时时长是否大于预设时长阈值;
[0031]所述执行模块,用于若所述目标C++程序对应的预设耗时时长大于所述预设时长阈值,则执行所述创建新线程。
[0032]可选地,所述装置还包括:
[0033]所述执行模块,还用于所述判断所述目标C++程序对应的预设耗时时长是否大于预设时长阈值之后,若所述目标C++程序对应的预设耗时时长小于或等于所述预设时长阈值,则通过所述UI线程执行所述目标C++程序,并保存所述UI线程的上下文信息;
[0034]所述回调模块,还用于在所述目标C++程序执行结束后,保持所述UI线程,并依据所述UI线程的上下文信息以及所述目标C++程序的函数指针进行回调。
[0035]可选地,所述跨平台框架包括flutter框架;所述预加载模块,具体用于:
[0036]引用ffi库,通过ffi库加载C++程序接口,并通过所述C++程序接口加载所述平台交互库;
[0037]所述跨平台框架通过ffi库调用所述C++程序接口,以实现通过所述C++程序接口对所述平台交互库的调用。
[0038]可选地,所述目标C++程序包括FileHelper.so文件读取程序;所述执行模块,具体
用于:
[0039]所述平台交互库保存所述UI线程的上下文信息;
[0040]所述平台交互库创建新线程,通过所述新线程执行FileHelper.so读取文件,并将执行结果保存至所述平台交互库中。
[0041]可选地,所述回调模块,具体用于:
[0042]在FileHelper.so执行结束后,依据所述UI线程的上下文信息切换至所述UI线程,并依据FileHelper.so的函数指针进行回调,将所述执行结果传输至所述跨平台框架,通过预设方式对所述执行结果进行解析和/或对所述执行结果进行显示。
[0043]依据本申请又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述跨平台框架与平台交互库的交互方法。
[0044]依据本申请再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述跨平台框架与平台交互库的交互方法。
[0045]借由上述技术方案,本申请提供的一种跨平台框架与平台交互库的交本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种跨平台框架与平台交互库的交互方法,其特征在于,包括:跨平台框架通过C++程序接口预先加载平台交互库;所述跨平台框架的UI线程调用所述C++程序接口,向所述平台交互库传入所述C++程序接口对应的目标C++程序的函数指针;创建新线程,通过所述新线程执行所述目标C++程序,并保存所述UI线程的上下文信息;在所述目标C++程序执行结束后,依据所述UI线程的上下文信息切换至所述UI线程,并依据所述目标C++程序的函数指针进行回调。2.根据权利要求1所述的方法,其特征在于,所述创建新线程之前,所述方法还包括:判断所述目标C++程序对应的预设耗时时长是否大于预设时长阈值;若所述目标C++程序对应的预设耗时时长大于所述预设时长阈值,则执行所述创建新线程。3.根据权利要求2所述的方法,其特征在于,所述判断所述目标C++程序对应的预设耗时时长是否大于预设时长阈值之后,所述方法还包括:若所述目标C++程序对应的预设耗时时长小于或等于所述预设时长阈值,则通过所述UI线程执行所述目标C++程序,并保存所述UI线程的上下文信息;在所述目标C++程序执行结束后,保持所述UI线程,并依据所述UI线程的上下文信息以及所述目标C++程序的函数指针进行回调。4.根据权利要求1所述的方法,其特征在于,所述跨平台框架包括flutter框架;所述跨平台框架通过C++程序接口预先加载平台交互库,具体包括:引用ffi库,通过ffi库加载C++程序接口,并通过所述C++程序接口加载所述平台交互库;所述跨平台框架通过ffi库调用所述C++程序接口,以实现通过所述C++程序接口对所述平台交互库的调用。5.根据权利要求4所述的方法,其特征在于,所述目标C++程序包括FileHelper.so文件读取程序;所述创建新线程,通过所述新线程执行所述目标C++程序,并保存所述UI线程的上下文信息,具体包括:所述平台交互库保存所述UI线程的...

【专利技术属性】
技术研发人员:向宁潘明田野何世伟
申请(专利权)人:成都鲁易科技有限公司
类型:发明
国别省市:

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

1