一种基于Android系统的多应用显示方法及终端设备与流程

文档序号:17600733发布日期:2019-05-07 20:15阅读:189来源:国知局
一种基于Android系统的多应用显示方法及终端设备与流程

本发明涉及通信技术领域,特别涉及一种基于android系统的多应用显示方法及终端设备。



背景技术:

android系统是一种开放源代码的操作,主要应用于移动设备,例如智能手机或平板电脑等。通常情况下,使用java编写的android应用能够满足绝大部分应用场景,但是从数据处理效率上来说,java编写的应用处理数据的效率不如更贴近底层的c/c++语言编写的应用,因此,通常存在java编写的应用和c/c++语言编写的应用。

目前的终端设备上一般都是运行一个操作系统,例如android系统,这样终端设备只能运行android系统支持的应用,而不能运行其他系统支持的应用,或者能够运行必须是基于android系统本身标准的框架结构实现的其他系统支持的应用,例如,将c/c++语言编写的应用映射到java编写的应用。

但是android系统显示应用界面是基于android系统自身的标准显示框架,可能无法兼容非android系统支持的应用的显示需求。



技术实现要素:

本发明实施例提供一种基于android系统的多应用显示方法及终端设备,能够兼容非android系统支持的应用的显示。

第一方面,本发明实施例提供了一种基于android系统多应用的显示方法,该显示方法包括:

在接收到第一指令时,判断第一应用是否是非android应用;其中,所述第一指令用于启动所述第一应用;

若所述第一应用为非android应用,则调用非原生显示模块;

基于所述非原生显示模块绘制所述第一应用的显示界面。

本发明实施例中,在android系统的基础上增设了本地显示模块接口,以用于调用内置的非原生显示模块。其中,非原生显示模块是基于非android系统的显示模块,例如可以是脱离android系统的应用框架层,通过c/c++封装实现的自定义的绘图模块,也可以是对android系统的标准应用框架层中的部分功能层进行封装实现的绘图模块,从而可以支持非android应用的显示,即实现兼容非android系统支持的应用的显示。

可选的,所述非原生显示模块包括第一显示模块和第二显示模块,其中,所述第一显示模块为基于非android系统的显示模块,所述第二显示模块为基于android系统的非标准应用程序框架层定义的显示模块;

可选的,若所述第一应用为非android应用,则调用非原生显示模块,包括:

通过所述动态加载模块根据所述第一应用的应用参数,调用所述非原生显示模块;其中,所述应用参数用于指示显示刷新频率。

可选的,通过所述动态加载模块,调用所述非原生显示模块,包括:

通过所述动态加载模块获取所述第一应用的应用参数;其中,所述应用参数用于指示显示刷新频率;

若所述应用参数指示的显示刷新频率大于预设阈值,则通过所述动态加载模块调用所述第一显示模块。

可选的,通过所述动态加载模块,调用所述非原生显示模块,还包括:

若所述应用参数指示的显示刷新频率小于或等于所述预设阈值,则通过所述动态加载模块调用所述第二显示模块。

本发明实施例可以预先设置多个显示模块,不同的显示模块对应不同的显示方式来绘制应用界面,因此,可以根据应用对刷新频率的要求以动态的方式调用不同的显示模块,以尽量满足对各个应用界面的显示需求。

可选的,基于所述非原生显示模块绘制所述第一应用的显示界面,包括:

若所述非原生显示模块为所述第二显示模块,则通过android系统标准的nativesurface接口创建第一显示层;

将所述第一显示层与已建立的显示层进行融合,以绘制所述显示界面。

本发明实施例中,新增设的显示模块可以利用android系统本身提供的图形资源,这样只需要基于android系统标准的应用框架层重新封装,即移植某些层的代码,而不用重新开发代码就实现与android系统的兼容,可以较好地直接利用android系统自身提供的资源。

可选的,在若所述第一应用为非android应用,则调用非原生显示模块之后,还包括:

启动硬件加速模块,所述硬件加速模块用于为所述第一应用的显示数据提供数据通道,并通过所述数据通道传输所述显示数据。

本发明实施例可以采用硬件加速模块实现加载应用的显示数据,以提高应用界面的刷新频率,更加满足应用界面的实际显示需求。

可选的,在基于所述非原生显示模块绘制所述第一应用的显示界面之后,还包括:

接收第二指令,所述第二指令用于启动第二应用;

若所述第二应用为android应用,则将所述第一应用的显示数据进行备份至缓存区;

在从所述第二应用切换至所述第一应用时,将备份的所述显示数据恢复至显存单元中。

可选的,还包括:

接收第三指令,所述第三指令用于启动第三应用;

若所述第三应用为非android应用,则将所述第一应用的显示数据进行备份至缓存区;

在从所述第三应用切换至所述第一应用时,将备份的所述显示数据恢复至显存单元中。

本发明实施例考虑到由于非android应用直接占用了显存,那么android应用和非android应用之间进行显示切换时,可能会造成黑屏的现象,所以上述两种可选的方式描述了在涉及到非android应用的显示或者切换时,采用备份应用的显示数据的方式避免数据的丢失,从而尽量避免黑屏现象的产生。

可选的,还包括:

若所述第一应用为android应用,则调用原生显示模块;所述原生显示模块基于android系统的标准应用程序框架层定义的本地显示模块;

基于所述原生显示模块绘制所述第一应用的显示界面。

可选的,还包括:

接收第四指令,所述第四指令用于启动第四应用;

若所述第四应用为非android应用,则将所述第一应用的显示数据进行备份至缓存区;

在从所述第四应用切换至所述第一应用时,将备份的所述显示数据恢复至显存单元中。

本发明实施例考虑到由于非android应用直接占用了显存,那么android应用和非android应用之间进行显示切换时,可能会造成黑屏的现象,所以涉及到android应用切换到非android应用后在切换回来时,采用备份应用的显示数据的方式避免数据的丢失,从而尽量避免黑屏现象的产生。

可选的,在接收到第一指令时,判断第一应用是否是非android应用,包括:

在接收到第一指令时,获取所述第一应用的第一配置参数,其中,所述第一配置参数用于指示应用的类型;

根据所述第一配置参数判断所述第一应用是否是非android应用。

可选的,在接收到第一指令时,判断第一应用是否是非android应用,包括:

在接收到所述第一指令后,向服务器发送请求消息,其中,所述请求消息用于请求获取所述第一应用的第二配置参数,所述第二配置参数用于指示应用的类型;

接收来自所述服务器的第二配置参数;

根据所述第二配置参数判断所述第一应用是否是非android应用。

上述两种可选的方式提供了在启动应用时,如何根据启动的应用调用适当的显示模块,以尽量满足应用的实际显示需求。

第二方面,本发明实施例提供了一种终端设备,该终端设备包括:

判断单元,用于在接收到第一指令时,判断第一应用是否是非android应用;其中,所述第一指令用于启动所述第一应用;

调用单元,用于若所述第一应用为非android应用,则调用非原生显示模块;

绘制单元,用于基于所述非原生显示模块绘制所述第一应用的显示界面。

可选的,所述非原生显示模块包括第一显示模块和第二显示模块,其中,所述第一显示模块为基于非android系统的显示模块,所述第二显示模块为基于android系统的非标准应用程序框架层定义的显示模块;所述调用单元具体用于:

通过动态加载模块,调用所述非原生显示模块;其中,所述动态加载模块调用所述第一显示模块或所述第二显示模块。

可选的,调用单元具体用于:

通过所述动态加载模块获取所述第一应用的应用参数;其中,所述应用参数用于指示显示刷新频率;

若所述应用参数指示的显示刷新频率大于预设阈值,则通过所述动态加载模块调用所述第一显示模块。

可选的,调用单元还用于:

若所述应用参数指示的显示刷新频率小于或等于所述预设阈值,则通过所述动态加载模块调用所述第二显示模块。

可选的,所述绘制单元具体用于:

若所述非原生显示模块为所述第二显示模块,则通过android系统标准的nativesurface接口创建第一显示层;

将所述第一显示层与已建立的显示层进行融合,以绘制所述显示界面。

可选的,还包括启动单元,用于:

在调用非原生显示模块之后,启动硬件加速模块,所述硬件加速模块用于为所述第一应用的显示数据提供数据通道,并通过所述数据通道传输所述显示数据。

可选的,所述绘制单元还用于:

在基于所述非原生显示模块绘制所述第一应用的显示界面之后,接收第二指令,所述第二指令用于启动第二应用;

若所述第二应用为android应用,则将所述第一应用的显示数据进行备份至缓存区;

在从所述第二应用切换至所述第一应用时,将备份的所述显示数据恢复至显存单元中。

可选的,所述绘制单元还用于:

接收第三指令,所述第三指令用于启动第三应用;

若所述第三应用为非android应用,则将所述第一应用的显示数据进行备份至缓存区;

在从所述第三应用切换至所述第一应用时,将备份的所述显示数据恢复至显存单元中。

可选的,所述调用单元还用于:若所述第一应用为android应用,则调用原生显示模块;所述原生显示模块为基于android系统的标准应用程序框架层定义的本地显示模块;

所述绘制单元还用于:基于所述原生显示模块绘制所述第一应用的显示界面。

可选的,所述绘制单元还用于:

接收第四指令,所述第四指令用于启动第四应用;

若所述第四应用为非android应用,则将所述第一应用的显示数据进行备份至缓存区;

在从所述第四应用切换至所述第一应用时,将备份的所述显示数据恢复至显存单元中。

可选的,所述判断单元具体用于:

在接收到第一指令时,获取所述第一应用的第一配置参数,其中,所述第一配置参数用于指示应用的类型;

根据所述第一配置参数判断所述第一应用是否是非android应用。

可选的,所述判断单元具体用于:

在接收到所述第一指令后,向服务器发送请求消息,其中,所述请求消息用于请求获取所述第一应用的第二配置参数,所述第二配置参数用于指示应用的类型;

接收来自所述服务器的第二配置参数;

根据所述第二配置参数判断所述第一应用是否是非android应用。

第三方面,本发明实施例提供了一种终端设备,该终端设备包括:

至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现如第一方面任一项所述的方法。

第四方面,提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法。

本发明实施例在android系统的基础上增设了本地显示模块接口,用于调用内置的非原生显示模块。其中,非原生显示模块是基于非android系统的显示模块,例如可以是脱离android系统的应用框架层,通过c/c++封装实现的自定义的绘图模块,也可以是对android系统的标准应用框架层中的部分功能层进行封装实现的绘图模块,从而可以支持非android应用的显示,即实现兼容非android系统支持的应用的显示。

附图说明

图1是本发明实施例提供的基于android系统多应用的显示方法的流程示意图;

图2为本发明实施例提供的基于android系统多应用的框架示意图;

图3为本发明实施例提供的终端设备的一种结构示意图;

图4为本发明实施例提供的终端设备的一种结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

本发明实施例提供了一种基于android系统的多应用显示方法,该方法在android系统的基础上增设了本地显示模块接口,用于调用内置的非原生显示模块。其中,非原生显示模块是基于非android系统的显示模块,例如可以是脱离android系统的应用框架层,通过c/c++封装实现的自定义的绘图模块,也可以是对android系统的标准应用框架层中的部分功能层进行封装实现的绘图模块,从而可以支持非android应用的显示,即实现兼容非android系统支持的应用的显示。

本发明实施例中,android应用指的是基于android系统开发的应用,非android应用指不是基于android系统开发的应用,例如基于linux系统开发的应用。通常来说,基于linux系统开发的应用多是采用c/c++语言开发的,相较于基于java语言开发的android应用来说,处理数据的速率较快。

下面结合说明书附图介绍本发明实施例提供的技术方案。

通常来说,基于linux系统开发的应用多是采用c/c++语言开发的,相较于基于java语言开发的android应用来说,处理数据的速率较快。因此,有时候为满足数据处理速率的需求,而采用非android应用。一般终端设备都是运行一个操作系统,例如android系统,这样终端设备只能运行android系统支持的应用,而不能运行其他系统支持的应用,这就导致android系统无法支持非android应用的使用。即使利用第三方插件将非android应用安装到android系统,但是不同的系统之间插件的类型也不一样,即第三方插件在不同的系统之间不兼容,还是无法保证android系统无法支持非android应用的使用。

对此,本发明实施例基于android系统增设了新的显示模块接口,用于调用内置的显示模块来实现非android应用的显示,从而实现兼容非android系统支持的应用的显示。为了兼容非android应用的显示,本发明实施例还增设了非原生显示模块,用于实现非android应用的显示。

下面结合说明书介绍本发明实施例提供的技术方案。

请参见图1及图2,本发明实施例提供了一种基于android系统的多应用显示方法,该方法可以由安装android系统的终端设备,例如手机、平板等执行,该方法的具体流程描述如下:

步骤s101、在接收到第一指令时,判断第一应用是否是非android应用;其中,第一指令用于启动第一应用。

用户可以向终端设备输入第一指令,以启动第一应用。终端设备接收到第一指令后,可以判断第一应用是否是非android应用,从而根据判断结果选择调用不同的显示模块接口,实现非android应用的应用界面的显示。

具体实施时,本发明实施例判断第一应用是否是非android应用可能包括以下两种实现方式:

第一种方式:

终端设备在接收到第一指令时,可以获取第一应用的第一配置参数,该第一配置参数用于指示应用的类型,从而解析第一配置参数就可以确定第一应用是否是非android应用。这种方式下,第一配置参数可以实现携带在第一应用的描述信息中或者版本信息中等,具体的方式本发明实施例不作限制。

第二种方式:

终端设备在接收到第一指令后,可以向服务器发送请求消息,该请求消息用于请求获取第一应用的第二配置参数,第二配置参数用于指示应用的类型。服务器接收到请求消息之后,可以获取第一应用的第二配置参数,从而将获取的第二配置参数发送给终端设备。那么终端设备就可以根据来自服务器的第二配置参数判断第一应用是否是非android应用。

s102、若第一应用为非android应用,则调用非原生显示模块。

如果终端设备确定第一应用是android应用,那么终端设备调用android系统自身提供的原生显示模块接口,如图2所示的view控件,以通过view控件调用android系统自身提供的原生显示模块实现对android应用的应用界面的显示。其中,原生显示模块是基于android系统的标准应用框架层所涉及到多个接口,例如依次为javasurface接口、nativesurface接口等,并进一步基于标准应用框架层实现对android应用的应用界面的显示,例如通过surfaceflinger融合图层,opengl渲染图层等。原生显示模块显示android应用的界面是常规的,本发明实施例的关注点不在此,因此这里不再赘述。

而如果终端设备确定第一应用是非android应用,那么终端设备调用新增设的如图2所示的本地显示模块接口,以通过本地显示模块接口调用非原生显示模块,实现对非android应用的应用界面的显示。可能的实施方式中,本发明实施例可以在基于android系统的jave层(应用层)增设本地显示模块接口,该本地显示模块接口可以申明非原生显示模块的所有显示操作,从而在调用非原生显示模块实现非android应用的显示时,通过本地显示模块接口实现调用所需要的资源。在图2中,由于本地显示模块接口相较于view控件(可呈现)实际上是不可呈现的,因此用虚线进行示意。

本发明实施例考虑到不同的非android应用,显示需求也可能不同。例如,某非android应用是游戏类应用,那么考虑到玩家玩游戏的实际需求,该非android应用界面的显示刷新频率就较高。又例如,某非android应用是非游戏类应用,那么即使该非android应用界面的显示刷新频率较低,对用户实际使用的影响也不大。因此,本发明实施例针对非android应用的不同显示需求,可以设置多个非原生显示模块,不同的非原生显示模块对应显示刷新频率不同的非android应用。

由于存在不同的非原生显示模块,这就涉及到选择调用哪个非原生显示模块的问题。为此,本发明实施例增设了动态加载模块,若某个应用界面需要显示时,本地显示模块接口可以调用动态加载模块选择加载某个非原生显示模块。当某个应用启动时,本发明实施例可以通过动态加载模块根据该应用的显示需求调用非原生显示模块。

具体地,以本发明实施例事先设置第一显示模块和第二显示模块共两个非原生模块为例,其中,第一显示模块用于显示刷新频率较高的非android应用,第二显示模块用于显示刷新频率较低的非android应用,介绍动态加载模块如何根据该应用的显示需求调用非原生显示模块。

可能的实施方式中,本发明实施例中的第一显示模块应用于显示刷新频率较高的非android应用的显示,那么第一显示模块可以是脱离android系统的应用框架层,采用c/c++语言封装实现的显示模块,能够直接绘制所要显示的应用界面。例如,第一显示模块可以封装应用界面的所有显示操作,例如通过函数createsurface创建图层、通过函数destroysurface销毁一个图层、通过函数getdisplaysurface获得显示层、通过函数blit实现图层数据覆盖、通过函数fill实现图层数据填充、通过函数sync实现图层同步显示等。上述提到的这些显示函数可以是根据需要自定义的显示函数,通过对这些显示函数进行封装,则可以得到第一显示模块,即一种非原生显示模块。相较于原生显示模块,即基于android系统的应用框架层实现显示的显示模块,由于需要完全按照应用框架层的封装结构来实现,而基于android系统的应用框架层涉及较多的功能层,那么就需要调用多个功能层才能实现显示应用界面,因此绘制界面所需时间较长,绘制效率低而言,本发明实施例中,第一显示模块由于是采用c/c++语言封装自定义的显示函数,直接绘制所要显示的应用界面,用时明显较少,且c/c++语言相较于android系统采用的java语言更贴近底层,处理数据的效率较快,就能够满足显示刷新频率较高的非android应用。

可能的实施方式中,本发明实施例中的第二显示模块应用显示刷新频率较低的非android应用的显示,那么第二显示模块可以是基于android系统的标准应用框架层,重新封装标准应用框架层中的部分应用框架层实现的显示模块,例如通过封装android标准应用框架层的nativesurface接口或者封装opengles图形库的接口来实现。

例如,第二显示模块可以是封装android标准应用框架层的nativesurface接口提供的函数nativesurface_create创建图层,函数nativesurface_destroy销毁图层、函数nativesurface_getdisplaysurface获取显示层、函数nativesurface_blit实现图层数据覆盖,函数nativesurface_fill实现图层数据填充、函数nativesurface_sync实现图层同步显示等获得的。相较于原生显示模块即封装的是nativesurface接口提供的全部功能层而言,本发明实施例中,相较于基于android系统的应用框架层涉及全部的功能层,需要调用全部功能层才能实现显示应用界面来说,第二显示模块由于封装的是nativesurface接口提供的部分函数,也就是部分功能层,所调用的功能层较少,从而用时也较少,能够较快地显示非android应用的应用界面。

或者,第二显示模块是通过封装opengles图形库的接口实现,可以封装opengles图形库中的部分接口。但是opengles图形库过于庞大,有几千个接口,要实现显示功能需要对opengles库相当的了解,否则短时间内无法完成封装工作,因此对研发人员的技能要求较高。而本发明实施例中,第二显示模块通过nativesurface的图形显示接口,只有几十个,相较于opengles图形库的接口,工作量较小,可以快速的完成封装,从而提高封装效率。

另外,经过opengl的图形操作会额外有一些特殊的渲染操作,这就导致了显示性能较低。因此,本发明实施例中的第一显示模块和封装nativesurface接口的第二显示模块可以选择不经过opengl处理,也就不对图形进行优化渲染,只是对图形进行原始显示操作,进一步提高显示性能。

本发明实施例中,本地显示模块接口可以申明第一显示模块封装的所有显示操作,以及申明第二显示模块封装的所有显示操作,从而实现通过本地显示模块接口实现对第一显示模块或第二显示模块的调用。

一种可能的实施方式,本发明实施例通过动态加载模块以要显示的非android应用的显示需求为条件选择调用第一显示模块还是调用第二显示模块。例如,第一显示模块可以实现100hz以上的显示刷新要求的显示,第二显示模块可以实现小于或等于100hz的显示刷新要求的显示。

动态加载模块在加载显示模块之前,可以先确定非android应用的显示需求,例如显示刷新频率需求,从而根据显示刷新频率需求调用对应的显示模块。具体地,动态加载模块可以获取第一应用的应用参数,其中,应用参数用于指示显示刷新频率。例如,应用参数可以是显示刷新频率,应用参数也可以是应用类型参数,例如应用类型参数指示第一应用是游戏类应用,那么可以认为第一应用的显示刷新频率较高。如果本发明实施例根据应用参数确定第一应用的显示刷新频率大于预设阈值,则通过动态加载模块调用第一显示模块。否则,如果终端设备根据应用参数确定第一应用的显示刷新频率小于或等于预设阈值,则通过动态加载模块调用第二显示模块。例如,预设阈值可以是100hz,如果动态加载模块确定要显示的非android应用要求显示刷新频率大于100hz,那么动态加载模块就调用第一显示模块。而如果动态加载模块确定要显示的非android应用要求显示刷新频率小于或等于100hz,那么动态加载模块就调用第二显示模块。

当然,本发明实施例中,动态加载模块确定要显示的非android应用要求显示刷新频率小于或等于100hz时,基于其他考虑也可以选择调用第一显示模块。例如,如果该非android应用是游戏类应用,则调用第一显示模块,如果该非android应用是视频类应用,则调用第二显示模块。

一种可能的实施方式中,本发明实施例中的动态加载模块在调用第一显示模块或第二显示模块之前,还可以输出提示信息,以提示用户选择所要调用的显示模块。例如,动态加载模块可以输出提示窗口,提示窗口可以设置对应第一显示模块的按钮,以及对应第二显示模块的按钮,用户可以点击其中的一个按钮,则动态加载模块根据用户的点击操作判断用户所选择的是哪个显示模块,从而根据用户的实际需求选择调用第一显示模块还是第二显示模块,以更加满足用户的实际需求,提升了用户体验。

本发明实施例中的第一显示模块是通过c/c++语言自定义实现的,相较于java语言处理数据的效率更高,相较于通过jni传递view控件的显示来实现非原生显示模块,更加满足较高的显示刷新频率的需求。这是由于jni传递view控件实质上是通过jni的方式基于java语言编写的程序实现c语言编写的代码,尽管数据处理的效果有所提高,但是jni的反调会严重影响绘图的性能,难以满足较高的显示刷新频率的需求,例如,通过coship中间件的osg接口封装实现jni传递view控件的显示就无法满足较高的显示刷新频率的需求。而本发明实施例第一显示模块是通过c/c++语言自定义实现的,不需要反调,即不需要以返回的方式传递参数,所以能够满足较高的显示刷新频率的需求。

s103、基于非原生显示模块绘制第一应用的显示界面。

本发明实施例调用非原生显示模块之后,就可以基于非原生显示模块绘制第一应用的显示界面。例如本发明实施例调用第一显示模块或者第二显示模块之后,就可以通过第一显示模块或者第二显示模块实现第一应用的应用界面的显示。

然而考虑到有时候第一显示模块或第二显示模块实现第一应用的应用界面的显示可能还是不满足实际需求,例如,第一应用的显示刷屏频率要求更高。本发明实施例在调用第一显示模块或第二显示模块之后还可以启动终端设备内置的硬件加速模块,例如图形二维加速引擎(twodimensionalengine,tde),该硬件加速模块用于为第一应用的显示数据提供数据通道,并通过数据通道传输显示数据,例如第一显示模块通过硬件加速模块将第一应用的显示数据通过数据通道传输到显存单元,或者,第二显示模块通过硬件加速模块将第一应用的显示数据通过数据通道传输到各个图层。相对于第一显示模块在实现绘制第一应用的显示界面的过程中,依次先从多个内存单元中获取显示数据,再将获取的显示数据依次存储到显存单元中,本发明实施例通过从硬件加速模块提供数据通道将全部的显示数据直接传输到显存单元,明显获取显示数据的用时较少,从而更快地实现第一应用的应用界面的显示。同样地,第二显示模块通过硬件加速模块将第一应用的显示数据通过数据通道传输到各个图层,相对于逐层传输用户也较少,也能更快地实现第一应用的应用界面的显示。

本发明实施例可以默认在调用第一显示模块或第二显示模块之后启动tde,以更加满足用户的需求,提升用户体验。可能的实施方式中,本发明实施例在调用第一显示模块或第二显示模块之后,还可以输出提示信息,以提示用户是否启动tde。例如,本发明实施例在调用第一显示模块或第二显示模块之后,可以输出提示窗口,提示窗口可以设置确定按钮和否定按钮,该确定按钮用于指示启动tde。如果用户可以点击确定按钮,则本发明实施例根据用户的输入确定启动tde,而如果用户点击否定按钮,则本发明实施例根据用户的输入确定不启动tde,以更加满足用户的实际需求,这样当用户选择不需要启动tde,既能满足用户的实际需求同时也节省了终端设备的功耗。

本发明实施例中,第二显示模块是通过封装android标准应用框架层的nativesurface接口提供的部分功能层来实现。那么第二显示模块在绘制第一应用的应用界面的显示时,可以通过android系统标准的nativesurface接口创建第一显示层,基于android系统的应用框架层中的部分功能层,将第一显示层与已建立的显示层,例如已建立的背景图层,或者其他要显示的图像对应的已建立的图层进行融合,以绘制显示界面。关于融合部分则通过surfaceflinger实现,这里不再赘述。

需要说明的是,基于android系统的nativesurface层次的融合,是为每个android应用分别建立各自的surface显示层,属于不同的显示层,所以每个应用的显示互相不影响,所以各个android应用之间切换不影响各个android应用的显示。而本发明实施例提供的第二显示模块也是将属于各个应用的新建的显示层与已建立的显示层进行融合,每个显示层互不影响,从而实现了非android应用与android应用之间的自由切换。例如,当前正在运行的应用是基于第二显示模块显示的非android应用,如果接收到启动android应用的指令,则建立显示android应用的界面所需要的显示层,并进行融合,并将融合后的显示层进行显示。此时如果接收到重新启动非android应用的指令,则建立显示非android应用的界面所需要的显示层,并进行融合,并将融合后的显示层进行显示。由于所建立的显示层之间互不影响,所以第二显示模块实现了非android应用与android应用之间的自由切换。

本发明实施例提供的第一显示模块实现第一应用的应用界面的显示,是将显示数据直接在缓存区(例如内存单元)进行缓存,在需要显示的时候再从内存拷贝到显存framebuffer进行显示。由于framebuffer是android系统中以事先模块的形式注册到系统中的,在模块初始化的时候就会创建好。当framebuffer被占用时,那么其他需要显示的内容是无法显示的,只有framebuffer处于空闲状态,才可以显示新的内容。由于只有一个framebuffer,一种应用的显示会覆盖另外一种应用的显示,因此,本发明实施例提供的第一显示模块在启动之后,framebuffer大多时间都被占用,如果此时用户将非android应用,切换至android应用时,由于framebuffer被占用,此时android应用的显示数据不能及时存储到framebuffer,此时就会出现黑屏现象。

因此,第一应用为非android应用时,本发明实施例在调用第一显示模块之后,可以将第一应用的显示数据进行备份至缓存区,当重新切换回第一应用时,即再重新绘制第一应用的界面时,将备份的显示数据恢复至显存单元framebuffer中。也就是终端设备由某个非android应用切换到另一非android应用,事先都将某个非android应用的显示数据进行备份至缓存区,当另一非android应用切换回某个非android应用,即再重新绘制某个非android应用时,将备份的显示数据恢复至显存单元framebuffer中。下面就以下几种情况介绍调用第一显示模块实现非android应用与其他非android应用或android应用的切换过程。

第一种情况:

本发明实施例中,如果终端设备启动的第一应用为非android应用,之后接收到启动第二应用的第二指令,且第二应用为android应用,也就是将非android应用切换至android应用时,终端设备可以将第一应用的显示数据进行备份至缓存区,而在第二应用再次切换至第一应用时,即再重新进行绘制第一应用的界面时,将备份的显示数据恢复至显存单元中。

第二种情况:

如果终端设备启动的第一应用为非android应用,之后接收到启动第三应用的第三指令,且第三应用为非android应用,也就是将非android应用切换至另一非android应用时,终端设备可以将第一应用的显示数据进行备份至缓存区,而在第三应用再次切换至第一应用时,即再重新进行绘制第一应用的界面时,将备份的显示数据恢复至显存单元中。

第三种情况:

如果终端设备启动的第一应用为android应用,之后接收到启动第四应用的第四指令,且第四应用为非android应用,也就是将android应用切换为非android应用时,终端设备可以将第一应用的显示数据进行备份至缓存区,而在第四应用再次切换至第一应用时,即再重新进行绘制第一应用的界面时,将备份的显示数据恢复至显存单元中。

上述三种情况中,由于在第二应用(第三应用、第四应用)再次切换至第一应用时,将备份的显示数据恢复至显存单元framebuffer,也就是将第一应用的显示数据覆盖显存单元framebuffer中第二应用(第三应用、第四应用)的显示数据,从而实现第一应用的显示。为了尽量避免黑屏现象的发生,本发明实施例可以通过硬件加速模块将备份的显示数据恢复至显存单元中,以使得第一应用的显示数据及时恢复至显存单元中。

在本发明实施例中,基于android系统启动一个应用,本发明实施例首先判断所要启动的应用是否是android应用,如果所要启动的应用是android应用,则调用android系统的原始显示模块实现所要启动的应用的显示。而如果所要启动的应用是非android应用,则调用新增设的本地显示模块接口,调用新增设的非原生显示模块实现所要启动的应用的显示。在本发明实施例中,非原生显示模块包括基于非android系统的第一显示模块和基于android系统的非标准应用程序框架层定义的第二显示模块。第一显示模块可以满足显示刷新频率较高的非android应用的显示,第二显示模块可以满足显示刷新频率较低的非android应用的显示。因此,进一步地,本发明实施例确定所要启动的应用为非android应用,可以进一步判断所要启动的应用的显示刷新频率的高低,从而通过实现设置的动态加载模块根据显示刷新频率的高低调用第一显示模块或第二显示模块进行非android应用的显示。且为了进一步提高显示的效率,本发明实施例在调用第一显示模块或第二显示模块之后,还可以启动硬件加速模块,以在显示时,通过从硬件加速模块提供数据通道将全部的显示数据直接传输到显存单元,从而更快地实现所要启动的应用的界面的显示。当第一显示模块启动非android应用之后,如果此时本发明实施例接收到启动另一应用的指令,例如另一非android应用、android应用时,本发明实施例将非android应用的显示数据备份至缓存区,在另一应用切换回非android应用时,即再重新进行绘制非android应用的界面时,本发明实施例通过硬件加速模块将备份的显示数据恢复至显存单元中。或者,本发明实施例启动了android应用之后,如果此时本发明实施例接收到启动非android应用的指令时,本发明实施例将android应用的显示数据备份至缓存区,在非android应用切换回非android应用时,即再重新进行绘制android应用的界面时,本发明实施例通过硬件加速模块将备份的显示数据恢复至显存单元中,这样在非android应用和android应用相互切换时,需要显示的显示数据能够及时存储到framebuffer,从而尽量避免出现黑屏现象。

综上,本发明实施例提供了一种基于android系统的多应用显示方法,该方法在android系统的基础上增设了本地显示模块接口,用于调用内置的非原生显示模块。其中,非原生显示模块是自定义的绘图模块,例如可以是脱离android系统的应用框架层,通过c/c++封装实现的绘图模块,也可以是对android系统的标准应用框架层中的部分功能层进行封装实现的绘图模块,从而可以支持非android应用的显示,即实现兼容非android系统支持的应用的显示。

下面结合说明书附图介绍本发明实施例提供的设备。

请参见图3,基于同一发明构思,本发明一实施例提供一种终端设备,该终端设备包括判断单元301、调用单元302和绘制单元303。其中:判断单元301用于在接收到第一指令时,判断第一应用是否是非android应用,第一指令用于启动第一应用;调用单元302用于若第一应用为非android应用,则调用非原生显示模块;绘制单元303用于基于非原生显示模块绘制第一应用的显示界面。

可选的,非原生显示模块包括第一显示模块和第二显示模块,其中,第一显示模块为基于非android系统的显示模块,第二显示模块为基于android系统的非标准应用程序框架层定义的显示模块;调用单元302具体用于:

通过动态加载模块,调用非原生显示模块;其中,动态加载模块调用第一显示模块或第二显示模块。

可选的,调用单元302具体用于:

通过动态加载模块获取第一应用的应用参数;其中,应用参数用于指示显示刷新频率;

若应用参数指示的显示刷新频率大于预设阈值,则通过动态加载模块调用第一显示模块。

可选的,调用单元302还用于:

若应用参数指示的显示刷新频率小于或等于预设阈值,则通过动态加载模块调用第二显示模块。

可选的,绘制单元303具体用于:

若非原生显示模块为第二显示模块,则通过android系统标准的nativesurface接口创建第一显示层;

将第一显示层与已建立的显示层进行融合,以绘制显示界面。

可选的,还包括启动单元,用于:

在调用非原生显示模块之后,启动硬件加速模块,硬件加速模块用于为第一应用的显示数据提供数据通道,并通过数据通道传输显示数据。

可选的,绘制单元303还用于:

在基于非原生显示模块绘制第一应用的显示界面之后,接收第二指令,第二指令用于启动第二应用;

若第二应用为android应用,则将第一应用的显示数据进行备份至缓存区;

在从第二应用切换至第一应用时,将备份的显示数据恢复至显存单元中。

可选的,绘制单元303还用于:

接收第三指令,第三指令用于启动第三应用;

若第三应用为非android应用,则将第一应用的显示数据进行备份至缓存区;

在从第三应用切换至第一应用时,将备份的显示数据恢复至显存单元中。

可选的,调用单元302还用于:

若第一应用为android应用,则调用原生显示模块;原生显示模块基于android系统的标准应用程序框架层定义的本地显示模块;

绘制单元303还用于:基于原生显示模块绘制第一应用的显示界面。

可选的,绘制单元303还用于:

接收第四指令,第四指令用于启动第四应用;

若第四应用为非android应用,则将第一应用的显示数据进行备份至缓存区;

在从第四应用切换至第一应用时,将备份的显示数据恢复至显存单元中。

可选的,判断单元301具体用于:

在接收到第一指令时,获取第一应用的第一配置参数,其中,第一配置参数用于指示应用的类型;

根据第一配置参数判断第一应用是否是非android应用。

可选的,判断单元301具体用于:

在接收到第一指令后,向服务器发送请求消息,其中,请求消息用于请求获取第一应用的第二配置参数,第二配置参数用于指示应用的类型;

接收来自服务器的第二配置参数;

根据第二配置参数判断第一应用是否是非android应用。

该终端设备可以用于执行本发明实施例提供的基于android系统多应用的显示方法。因此关于该设备中各功能模块所能够实现的功能,可参考本发明实施例提供的基于android系统多应用的显示方法的实施例中的相应描述,不多赘述。

请参见图4,基于同一发明构思,本发明一实施例提供一种终端设备,该终端设备可以包括:至少一个处理器401,处理器401用于执行存储器中存储的计算机程序时实现本发明实施例提供的基于android系统多应用的显示方法所示的步骤。

可选的,处理器401具体可以是中央处理器、特定应用集成电路(英文:applicationspecificintegratedcircuit,简称:asic),可以是一个或多个用于控制程序执行的集成电路。

可选的,该终端设备还包括与至少一个处理器连接的存储器402,存储器402可以包括只读存储器(英文:readonlymemory,简称:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)和磁盘存储器。存储器402用于存储处理器401运行时所需的数据,即存储有可被至少一个处理器401执行的指令,至少一个处理器401通过执行存储器402存储的指令,执行本发明实施例提供的基于android系统多应用的显示方法。其中,存储器402的数量为一个或多个。其中,存储器402在图4中一并示出,但需要知道的是存储器402不是必选的功能模块,因此在图4中以虚线示出。

其中,判断单元301、调用单元302和绘制单元303所对应的实体设备均可以是前述的处理器401。该终端设备可以用于执行本发明实施例提供的基于android系统多应用的显示方法。因此关于该设备中各功能模块所能够实现的功能,可参考本发明实施例提供的基于android系统多应用的显示方法中的相应描述,不多赘述。

本发明实施例还提供一种计算机存储介质,其中,计算机存储介质存储有计算机指令,当计算机指令在计算机上运行时,使得计算机执行本发明实施例提供的基于android系统多应用的显示方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(universalserialbusflashdisk)、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1