一种皮肤资源加载方法及电子设备的利记博彩app

文档序号:6638463阅读:229来源:国知局
一种皮肤资源加载方法及电子设备的利记博彩app
【专利摘要】本发明涉及互联网【技术领域】,公开了一种皮肤资源加载方法及电子设备,以解决现有技术中子进程加载皮肤资源时性能低的技术问题,该方法应用于电子设备中,电子设备上运行有应用程序,应用程序包含主进程和至少一个子进程,包括:至少一个子进程中的第一子进程向主进程发起皮肤资源获取请求,皮肤资源获取请求用于获取第一皮肤资源;主进程接收到皮肤资源获取请求之后,复制第一皮肤资源的句柄值并发送给第一子进程;第一子进程通过句柄值从主进程的地址空间加载第一皮肤资源,达到了提高子进程加载皮肤资源的性能的技术效果。
【专利说明】一种皮肤资源加载方法及电子设备

【技术领域】
[0001]本发明涉及互联网领域,尤其涉及一种皮肤资源加载方法及电子设备。

【背景技术】
[0002]进程是计算机操作系统分配资源的最小单位,每个进程有自己的独立地址空间。目前多数软件采用多进程架构。多进程应用程序包括一个主进程和多个子进程,主进程主要负责界面相关的工作,子进程负责一些后台操作,比如数据处理等。基于不同任务,子进程有可能处理涉及界面相关的工作,这时子进程加载界面时就需要使用皮肤资源。
[0003]如图1所示,为现有技术中子进程加载皮肤资源的流程图,具体包括以下步骤:
[0004]步骤S101:开始阶段;
[0005]步骤S102:子进程进行界面绘制;
[0006]步骤S103:从应用程序的皮肤磁盘路径加载皮肤资源到内容;
[0007]步骤S104:获取皮肤资源对应的图片进行界面绘制;
[0008]步骤S105:结束。
[0009]以上方案至少存在以下技术问题:
[0010](1)速度慢,子进程进行界面绘制所需的皮肤资源,首先需要从磁盘路径去加载皮肤文件到内存,然后获取图片资源,最后再进行界面的绘制。读磁盘10操作的CPU、时间开销比较大,如果用户计算机性能低,界面会出现卡顿的现象。
[0011](2)占用内存,皮肤资源已经在主进程的地址空间中存在一份,再加载一份资源到子进程地址空间,增加了应用程序的内存开销,造成系统资源的浪费。


【发明内容】

[0012]本申请实施例提供了一种皮肤资源加载方法及电子设备,以解决现有技术中子进程加载皮肤资源时性能低的技术问题。
[0013]第一方面,本发明实施例提供一种皮肤资源加载方法,应用于电子设备中,所述电子设备上运行有应用程序,所述应用程序包含主进程和至少一个子进程,包括:
[0014]所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求,所述皮肤资源获取请求用于获取第一皮肤资源;
[0015]所述主进程接收到所述皮肤资源获取请求之后,复制所述第一皮肤资源的句柄值并发送给所述第一子进程;
[0016]所述第一子进程通过所述句柄值从所述主进程的地址空间加载所述第一皮肤资源。
[0017]可选的,在所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求步骤之前,所述方法还包括:
[0018]在启动所述应用程序时,所述主进程将所述应用程序所对应的至少一个皮肤资源以内存映像文件的方式加载到所述主进程的地址空间,并存储所述至少一个皮肤资源的至少一个句柄值。
[0019]可选的,在所述少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求步骤之前,所述方法还包括:
[0020]所述主进程根据所述应用程序的业务需求创建所述至少一个子进程。
[0021]可选的,所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求,具体为:
[0022]所述第一子进程通过所述第一皮肤资源的皮肤资源ID向所述主进程发起所述皮肤资源获取请求;
[0023]所述主进程复制所述第一皮肤资源的句柄值并发送给所述第一子进程,具体包括:
[0024]所述主进程根据所述皮肤资源ID确定所述句柄值,通过DuplicateHandle接口复制所述句柄值并将所述复制的句柄值发送给所述第一子进程。
[0025]可选的,在所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求步骤之前,所述方法还包括:
[0026]在检测到所述应用程序调用插件时,确定所述插件所对应的所述第一子进程。
[0027]第二方面,本发明实施例提供一种电子设备,所述电子设备上运行有应用程序,所述应用程序包含主进程和至少一个子进程,所述电子设备包括:
[0028]请求模块,用于控制所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求,所述皮肤资源获取请求用于获取第一皮肤资源;
[0029]写入模块,用于在所述主进程接收到所述皮肤资源获取请求之后,控制所述主进程复制所述第一皮肤资源的句柄值并发送给所述第一子进程;
[0030]读取模块,用于控制所述第一子进程通过所述句柄值从所述主进程的地址空间加载所述第一皮肤资源。
[0031]可选的,所述电子设备还包括:
[0032]加载模块,用于在启动所述应用程序时,控制所述主进程将所述应用程序所对应的至少一个皮肤资源以内存映像文件的方式加载到所述主进程的地址空间,并存储所述至少一个皮肤资源的至少一个句柄值。
[0033]可选的,所述电子设备还包括:
[0034]创建模块,用于在所述少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求步骤之前,控制所述主进程根据所述应用程序的业务需求创建所述至少一个子进程。
[0035]可选的,所述请求模块,具体用于:
[0036]控制所述第一子进程通过所述第一皮肤资源的皮肤资源ID向所述主进程发起所述皮肤资源获取请求;
[0037]所述写入模块,具体用于:
[0038]所述主进程根据所述皮肤资源ID确定所述句柄值,通过DuplicateHandle接口复制所述句柄值并将所述复制的句柄值发送给所述第一子进程。
[0039]可选的,所述电子设备还包括:
[0040]确定模块,用于在检测到所述应用程序调用插件时,确定所述插件所对应的所述第一子进程。
[0041]本申请有益效果如下:
[0042]由于在本发明实施例中,提供了一种皮肤资源加载方法,应用于电子设备中,电子设备上运行有应用程序,应用程序包含主进程和至少一个子进程,包括:至少一个子进程中的第一子进程向主进程发起皮肤资源获取请求,皮肤资源获取请求用于获取第一皮肤资源;主进程接收到皮肤资源获取请求之后,复制第一皮肤资源的句柄值并发送给第一子进程;第一子进程通过句柄值从主进程的地址空间加载第一皮肤资源。也就是说,第一子进程在需要加载第一皮肤资源时,是直接向主进程请求获取第一皮肤资源的句柄值,然后基于第一皮肤资源的句柄值从主进程的地址空间加载第一皮肤资源,而不需要从磁盘路径去加载皮肤文件到内容,故而提高了子进程加载皮肤资源的性能,防止了界面卡顿现象;
[0043]且皮肤资源只需要存储于主进程的地址空间,而不需要加载到子进程的地址空间,故而降低了应用程序的内存开销,防止了系统资源的浪费;
[0044]进一步的,通过上述方案提高了应用程序的性能,从而使应用程序的界面更加流畅,提高了用户的体验度。

【专利附图】

【附图说明】
[0045]图1为现有技术中子进程加载皮肤资源的方法的流程图;
[0046]图2为本发明实施例中皮肤资源加载方法的流程图;
[0047]图3为本发明实施例中电子设备的结构图。

【具体实施方式】
[0048]本申请实施例提供了一种皮肤资源加载方法及电子设备,以解决现有技术中子进程加载皮肤资源时速度慢的技术问题。
[0049]本申请实施例的技术方案为解决上述技术问题,总体思路如下:
[0050]提供了一种皮肤资源加载方法,应用于电子设备中,电子设备上运行有应用程序,应用程序包含主进程和至少一个子进程,包括:至少一个子进程中的第一子进程向主进程发起皮肤资源获取请求,皮肤资源获取请求用于获取第一皮肤资源;主进程接收到皮肤资源获取请求之后,复制第一皮肤资源的句柄值并发送给第一子进程;第一子进程通过句柄值从主进程的地址空间加载第一皮肤资源。也就是说,第一子进程在需要加载第一皮肤资源时,是直接向主进程请求获取第一皮肤资源的句柄值,然后基于第一皮肤资源的句柄值从主进程的地址空间加载第一皮肤资源,而不需要从磁盘路径去加载皮肤文件到内容,故而提高了子进程加载皮肤的性能,防止了界面卡顿现象;
[0051]且皮肤资源只需要存储于主进程的地址空间,而不需要加载到子进程的地址空间,故而降低了应用程序的内存开销,防止了系统资源的浪费;
[0052]进一步的,通过上述方案提高了应用程序的性能,从而使应用程序的界面更加流畅,提高了用户的体验度。
[0053]为了更好的理解上述技术方案,下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
[0054]第一方面,本发明实施例提供一种皮肤资源加载方法,应用于电子设备中,电子设备上应用程序,应用程序包含主进程和至少一个子进程,举例来说,应用程序为多进程架构下的应用程序,请参考图2,该方法包括:
[0055]步骤S201:至少一个子进程中的第一子进程向主进程发起皮肤资源获取请求,皮肤资源获取请求用于获取第一皮肤资源;
[0056]步骤S202:主进程接收到皮肤资源获取请求之后,复制第一皮肤资源的句柄值并发送给第一子进程;
[0057]步骤S203:第一子进程通过句柄值从主进程的地址空间加载第一皮肤资源。
[0058]作为进一步的优选实施例,在步骤S201之前,方法还包括:
[0059]在启动应用程序时,主进程将应用程序所对应的至少一个皮肤资源以内存映像文件的方式加载到主进程的地址空间,并存储至少一个皮肤资源的至少一个句柄值。
[0060]以应用程序为浏览器为例,电子设备在检测到运行浏览器的操作(例如:点击任务栏上的浏览器图标的操作、双击桌面上的浏览器的图标的操作)之后,就运行浏览器,在这种情况下,浏览器的主进程首先通过浏览器的皮肤资源的ID确定应用程序的至少一个皮肤资源,然后将至少一个皮肤资源加载到主进程的地址空间。其中,至少一个皮肤资源中的每个皮肤资源对应一条句柄值,通过对应的句柄值可以查找到对应的皮肤资源,故而主进程同时存储有至少一个皮肤资源的至少一个句柄值,以通过至少一个句柄值查找获得至少一个皮肤资源。
[0061]接着,主进程确定应用程序的主界面所需要的多个皮肤资源的ID,并通过这多个皮肤资源的ID获取对应的多个句柄值,然后通过这个多个句柄值从主进程的地址空间获取多个皮肤资源的图像并将其显示在主界面的对应位置,进而实现浏览器的主界面的展示,从而将浏览器提供给用户使用。
[0062]作为进一步的优选实施例,在步骤S201之前,方法还包括:
[0063]主进程根据应用程序的业务需求创建至少一个子进程。
[0064]以应用程序为浏览器为例,浏览器启动后,创建主进程,主进程主要负责界面的展示,根据业务需求,主进程创建页面浏览的子进程,扩展插件管理的子进程。负责插件管理的子进程包括第三方插件的安装,加载,使用等。常用的第三方插件有用户界面交互,会弹出一些窗口,这些窗口运行在子进程,并且它们的绘制需要用到浏览器的皮肤资源。
[0065]作为进一步的优选实施例,在步骤S201之前,方法还包括:
[0066]在检测到应用程序调用插件时,确定插件所对应的第一子进程。
[0067]以应用程序为浏览器为例,浏览器在有些应用场景会需要使用插件,而有些插件需要弹出窗口,弹出窗口则需要使用皮肤资源进行界面绘制,故而浏览器在检测到用户点击显示插件的操作之后,就开始调用插件,如果插件需要弹出窗口,插件所在的子进程需要绘制该弹出窗口的界面,故而需要获取对应的第一皮肤资源。
[0068]步骤S201中,至少一个子进程中的第一子进程向主进程发起皮肤资源获取请求,具体为:第一子进程通过第一皮肤资源的皮肤资源ID向主进程发起皮肤资源获取请求;
[0069]由于在应用程序启动时,主进程已经将应用程序所对应的至少一个皮肤资源以内存映像文件的方式加载到主进程的地址空间,故而直接通过第一皮肤资源的资源ID就可以向主进程请求获取第一皮肤资源;
[0070]步骤S202中,主进程复制第一皮肤资源的句柄值并发送给第一子进程的句柄表,具体包括:主进程根据皮肤资源ID确定句柄值,然后通过调用DuplicateHandle接口复制皮肤资源的句柄值并将幅值的句柄值传给第一子进程。
[0071]其中,DuplicateHandle接口是微软提供的标准 API (Applicat1n ProgrammingInterface:应用程序编程接口),作用是从当前进程复制句柄到其他进程空间,即获得一个进程句柄表中的一个记录项,然后在另一个进程的句柄表中创建这个记录项的一个副本。
[0072]步骤S203中,第一子进程读取第一子进程的句柄表就能够获取第一皮肤资源的句柄值,该句柄值表征第一皮肤资源在主进程的地址空间的存储位置,基于此第一子进程就能够从主进程的地址空间获取第一皮肤资源的图像,然后将第一皮肤资源的图像按照预设的显示方式和显示位置进行展示,就完成了对第一皮肤资源的加载。
[0073]第二方面,基于同一发明构思,本发明实施例提供一种电子设备,电子设备上运行有应用程序,应用程序包含主进程和至少一个子进程,请参考图3,电子设备包括:
[0074]请求模块30,用于控制至少一个子进程中的第一子进程向主进程发起皮肤资源获取请求,皮肤资源获取请求用于获取第一皮肤资源;
[0075]写入模块31,用于在主进程接收到皮肤资源获取请求之后,控制主进程复制第一皮肤资源的句柄值并发送给第一子进程;
[0076]读取模块32,用于控制第一子进程通过句柄值从主进程的地址空间加载第一皮肤资源。
[0077]可选的,电子设备还包括:
[0078]加载模块,用于在启动应用程序时,控制主进程将应用程序所对应的至少一个皮肤资源以内存映像文件的方式加载到内存中主进程的地址空间,并存储至少一个皮肤资源的至少一个句柄值。
[0079]可选的,电子设备还包括:
[0080]创建模块,用于在至少一个子进程中的第一子进程向主进程发起皮肤资源获取请求步骤之前,控制主进程根据应用程序的业务需求创建至少一个子进程。
[0081]可选的,请求模块30,具体用于:
[0082]控制第一子进程通过第一皮肤资源的皮肤资源ID向主进程发起皮肤资源获取请求;
[0083]写入模块31,具体用于:
[0084]控制主进程根据皮肤资源ID确定句柄值,通过DuplicateHandle接口复制句柄值并将复制的句柄值发送给第一子进程。
[0085]可选的,电子设备还包括:
[0086]确定模块,用于在检测到应用程序调用插件时,确定插件所对应的第一子进程。
[0087]本发明的一个或多个实施例,至少具有以下有益效果:
[0088]由于在本发明实施例中,提供了一种皮肤资源加载方法,应用于电子设备中,电子设备上运行有应用程序,应用程序包含主进程和至少一个子进程,包括:至少一个子进程中的第一子进程向主进程发起皮肤资源获取请求,皮肤资源获取请求用于获取第一皮肤资源;主进程接收到皮肤资源获取请求之后,复制第一皮肤资源的句柄值并发送给第一子进程;第一子进程通过句柄值从主进程的地址空间加载第一皮肤资源。也就是说,第一子进程在需要加载第一皮肤资源时,是直接向主进程请求获取第一皮肤资源的句柄值,然后基于第一皮肤资源的句柄值从主进程的地址空间加载第一皮肤资源,而不需要从磁盘路径去加载皮肤文件到内容,故而提高了子进程加载皮肤的性能,防止了界面卡顿现象;
[0089]且皮肤资源只需要存储于主进程的地址空间,而不需要加载到子进程的地址空间,故而降低了应用程序的内存开销,防止了系统资源的浪费;
[0090]进一步的,通过上述方案提高了应用程序的性能,从而使应用程序的界面更加流畅,提高了用户的体验度。
[0091]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0092]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0093]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0094]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0095]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0096]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种皮肤资源加载方法,应用于电子设备中,所述电子设备上运行有应用程序,所述应用程序包含主进程和至少一个子进程,其特征在于,包括: 所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求,所述皮肤资源获取请求用于获取第一皮肤资源; 所述主进程接收到所述皮肤资源获取请求之后,复制所述第一皮肤资源的句柄值并发送给所述第一子进程; 所述第一子进程通过所述句柄值从所述主进程的地址空间加载所述第一皮肤资源。
2.如权利要求1所述的方法,其特征在于,在所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求步骤之前,所述方法还包括: 在启动所述应用程序时,所述主进程将所述应用程序所对应的至少一个皮肤资源以内存映像文件的方式加载到所述主进程的地址空间,并存储所述至少一个皮肤资源的至少一个句柄值。
3.如权利要求1所述的方法,其特征在于,在所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求步骤之前,所述方法还包括: 所述主进程根据所述应用程序的业务需求创建所述至少一个子进程。
4.如权利要求1所述的方法,其特征在于,所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求,具体为: 所述第一子进程通过所述第一皮肤资源的皮肤资源ID向所述主进程发起所述皮肤资源获取请求; 所述主进程复制所述第一皮肤资源的句柄值并发送给所述第一子进程,具体包括: 所述主进程根据所述皮肤资源ID确定所述句柄值,通过DuplicateHandle接口复制所述句柄值并将所述复制的句柄值发送给所述第一子进程。
5.如权利要求1-4任一所述的方法,其特征在于,在所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求步骤之前,所述方法还包括: 在检测到所述应用程序调用插件时,确定所述插件所对应的所述第一子进程。
6.一种电子设备,所述电子设备上运行有应用程序,所述应用程序包含主进程和至少一个子进程,其特征在于,所述电子设备包括: 请求模块,用于控制所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求,所述皮肤资源获取请求用于获取第一皮肤资源; 写入模块,用于在所述主进程接收到所述皮肤资源获取请求之后,控制所述主进程复制所述第一皮肤资源的句柄值并发送给所述第一子进程; 读取模块,用于控制所述第一子进程通过所述句柄值从所述主进程的地址空间加载所述第一皮肤资源。
7.如权利要求6所述的电子设备,其特征在于,所述电子设备还包括: 加载模块,用于在启动所述应用程序时,控制所述主进程将所述应用程序所对应的至少一个皮肤资源以内存映像文件的方式加载到所述主进程的地址空间,并存储所述至少一个皮肤资源的至少一个句柄值。
8.如权利要求6所述的电子设备,其特征在于,所述电子设备还包括: 创建模块,用于在所述至少一个子进程中的第一子进程向所述主进程发起皮肤资源获取请求步骤之前,控制所述主进程根据所述应用程序的业务需求创建所述至少一个子进程。
9.如权利要求6所述的电子设备,其特征在于,所述请求模块,具体用于: 控制所述第一子进程通过所述第一皮肤资源的皮肤资源ID向所述主进程发起所述皮肤资源获取请求; 所述写入模块,具体用于: 控制所述主进程根据所述皮肤资源ID确定所述句柄值,通过DuplicateHandle接口复制所述句柄值并将所述复制的句柄值发送给所述第一子进程。
10.如权利要求6-9任一所述的电子设备,其特征在于,所述电子设备还包括: 确定模块,用于在检测到所述应用程序调用插件时,确定所述插件所对应的所述第一子进程。
【文档编号】G06F9/445GK104461636SQ201410766157
【公开日】2015年3月25日 申请日期:2014年12月11日 优先权日:2014年12月11日
【发明者】刘静, 柯津津, 陈建军 申请人:北京搜狗科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1