一种资源文件的加载方法和装置与流程

文档序号:11829066阅读:253来源:国知局
一种资源文件的加载方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种资源文件的加载方法和装置。



背景技术:

在游戏开发过程中,现有的游戏资源处理工作流是当美工或策划人员修改一个文件后,让运行中的游戏退出,重新创建一个资源文件(通常占用几百兆的存储空间),然后重新运行整个游戏,这种工作流的方式极大的浪费了时间,影响了游戏的开发速度。例如在目前的冷加载实现方案中,在游戏启动时加载所有的资源文件,然后在整个游戏生命周期内使用,当资源文件修改后,游戏需要退出,再次打包资源文件,然后重启游戏服务器并加载所有的资源文件。在这种冷启动的资源文件加载方案中,当资源文件的配置改变之后,需要查看修改资源文件后的加载效果,就不得不退出游戏程序,这样的工作流限制了游戏的反复调整,无法测试更多的实验数据,严重影响了开发速度和最终的游戏质量。



技术实现要素:

本发明实施例提供了一种资源文件的加载方法和装置,用于实现对资源文件的热加载,无需退出正在运行的程序即可完成资源文件的加载过程。

为解决上述技术问题,本发明实施例提供以下技术方案:

第一方面,本发明实施例提供一种资源文件的加载方法,包括:

将需要监视的资源目录注册到目录监视列表中,所述资源目录包括:至少一个资源文件;

对所述目录监视列表中的资源目录进行文件状态变更监控;

当检测到所述目录监视列表中的第一资源文件发生状态变更时,根据所述目录监视列表对应的监控结果获取所述第一资源文件的文件更新存储路径和所述第一资源文件的文件名称;

根据所述文件更新存储路径和所述文件名称将更新后的第一资源文件加载到内存中,并使用所述更新后的第一资源文件替换掉资源文件映射表中更新前的第一资源文件。

第二方面,本发明实施例还提供一种资源文件的加载装置,包括:

目录注册模块,用于将需要监视的资源目录注册到目录监视列表中,所述资源目录包括:至少一个资源文件;

状态监控模块,用于对所述目录监视列表中的资源目录进行文件状态变更监控;

获取模块,用于当检测到所述目录监视列表中的第一资源文件发生状态变更时,根据所述目录监视列表对应的监控结果获取所述第一资源文件的文件更新存储路径和所述第一资源文件的文件名称;

资源更新模块,用于根据所述文件更新存储路径和所述文件名称将更新后的第一资源文件加载到内存中,并使用所述更新后的第一资源文件替换掉资源文件映射表中更新前的第一资源文件。

从以上技术方案可以看出,本发明实施例具有以下优点:

在本发明实施例中,首先将需要监视的资源目录注册到目录监视列表中,资源目录包括:至少一个资源文件,然后对目录监视列表中的资源目录进行文件状态变更监控,当检测到目录监视列表中的第一资源文件发生状态变更时,根据目录监视列表对应的监控结果获取第一资源文件的文件更新存储路径和第一资源文件的文件名称,最后根据文件更新存储路径和文件名称将更新后的第一资源文件加载到内存中,并使用更新后的第一资源文件替换掉资源文件映射表中更新前的第一资源文件。本发明实施例中可以通过目标监视列表对资源目录进行监视,当有第一资源文件发生状态变更时,将更新后的第一资源文件加载到内存中,通过读取到内存中的更新后的第一资源文件实现对资源文件映射表中的第一资源文件的更新,上述第一资源文件的加载并不需要退出正在运行的程序,通过资源文件映射表就可以快速浏览到更新后的第一资源文件,本发明实施例中可以实现对资源文件的热加载,无需退出正在运行的程序即可完成资源文件的加载过程。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种资源文件的加载方法的流程方框示意图;

图2为本发明实施例提供的资源文件的热加载实现流程示意图;

图3-a为本发明实施例提供的一种资源文件的加载装置的组成结构示意图;

图3-b为本发明实施例提供的一种状态监控模块的组成结构示意图;

图3-c为本发明实施例提供的一种获取模块的组成结构示意图;

图3-d为本发明实施例提供的另一种资源文件的加载装置的组成结构示意图;

图4为本发明实施例提供的资源文件的加载方法应用于终端的组成结构示意图。

具体实施方式

本发明实施例提供了一种资源文件的加载方法和装置,用于实现对资源文件的热加载,无需退出正在运行的程序即可完成资源文件的加载过程。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。

以下分别进行详细说明。本发明提供的资源文件的加载方法的一个实施例,具体可以应用于对资源文件的更新自动加载过程中,请参阅图1所示,本发明一个实施例提供的资源文件的加载方法,可以包括如下步骤:

101、将需要监视的资源目录注册到目录监视列表中,资源目录包括:至少一个资源文件。

在本发明实施例中可以使用目录监视列表实现对资源目录的动态监管,对于需要监视的资源目录首先注册到目录监视列表中,需要监视的资源目录中可以包括至少一个的资源文件。其中,资源文件可以是包括多种文件类型,具体可以应用场景来确定,例如在游戏场景下,资源文件可以包括游戏模型、游戏关卡、游戏角色、游戏声音和游戏动画等。又如在软件开发场景下,资源文件可以是需要配置的属性文件、应用文件和日志文件等。本发明实施例中资源文件通过资源目录来管理,在资源目录中包括的资源文件个数不做限定。本发明实施例提供的目录监视列表中包括所有需要监视的资源目录,目录监视列表可以根据目录监控的需要进行实时更新。

在本发明的一些实施例中,步骤101将需要监视的资源目录注册到目录监视列表中,具体可以包括如下步骤:

A1、将需要监视的资源目录注册到文件监视器的目标监视列表中。

其中,本发明实施例中目标监视列表可以通过文件监视器来实现,对于需要监视的资源目录,可以发送给文件监视器,由文件监视器将资源目录写入到目标监视列表中,例如可以通过window操作系统中的file watcher实现文件监视器。

102、对目录监视列表中的资源目录进行文件状态变更监控。

在本发明实施例中,通过目录监视列表添加需要监视的资源目录之后,对该目标监视列表中的资源目录进行监控,需要监控目录监视列表中的资源目录中是否有资源文件的文件状态发生了变更。其中文件状态变更具体可以指的是修改资源文件的文件内容,增加新的资源文件或者删除无效的资源文件等,例如目录监视列表中的资源文件被修改后写入了存储器,则可以确定资源文件的文件状态发生了变更。后续实施例中以资源文件的文件内容修改为例进行说明。

在本发明的一些实施例中,在前述执行步骤A1的实现场景下,步骤102对目录监视列表中的资源目录进行文件状态变更监控,包括:

B1、通过文件监视器检测目录监视列表中的资源目录中是否有资源文件的文件状态发生变更。

其中,在前述实施例中,文件监视器检测目录监视列表时,可以通过文件监视器来判断目录监视列表中的资源目录中是否有资源文件的文件状态发生变更。文件监视器可以按照配置的检测周期来实时的判断是否有资源文件的文件状态变更,若有资源文件的文件状态变更时文件监视器可以输出变更提醒,若在当前的检测周期内没有发生文件状态变更,则启动下一个检测周期,继续判断目标监视列表中是否有资源文件的文件状态发生变更。

在本发明的另一些实施例中,步骤102对目录监视列表中的资源目录进行文件状态变更监控,包括:

C1、将目标监视列表中的资源目录与状态变更事件关联起来;

C2、按照预置的轮询周期判断状态变更事件是否发生,当状态变更事件发生时,根据目录监视列表对应的监控结果确定目标监视列表中发生状态变更的资源文件,当状态变更事件没有发生时,确定目标监视列表中没有资源文件发生状态变更。

其中,对于目标监视列表中的资源目录分别建立与之匹配的状态变更事件,则对于不同资源目录下的文件状态变更就可以通过状态变更事件来检测到,目标监视列表中的资源目录与状态变更事件之间建立关联关系就可以实现各个资源目录和对应的状态变更事件之间的绑定。然后对建立的状态变更事件是否发生进行实时的判断,例如可以设置轮询周期,轮询周期可以具体应用场景来设置,例如可以设置为100毫秒,在对于事件产生更敏感的应用场景下,轮询周期还可以设置为小于100毫秒的其它时间值。通过对状态变更事件的周期性判断,可以生成目录监视列表对应的监控结果,当状态变更事件发生时,根据该监控结果可以确定目标监视列表中发生状态变更的资源文件,当状态变更事件没有发生时,确定目标监视列表中没有资源文件发生状态变更。其中状态变更事件的发生与否可以通过对事件的不同取值来判断,例如当事件取值为真(英文名称:true)时确定状态变更事件发生,当事件取值为否(英文名称:false)时确定没有任何状态变更事件发生。

103、当检测到目录监视列表中的第一资源文件发生状态变更时,根据目录监视列表对应的监控结果获取第一资源文件的文件更新存储路径和第一资源文件的文件名称。

在本发明实施例中,通过步骤102可以对目录监视列表中的资源目录进行实时的文件状态变更监控,在检测到有资源文件的文件状态变更时可以执行步骤103,为了便于描述,将发生了文件状态变更的资源文件定义为第一资源文件,该第一资源文件指的是在目录监视列表中产生了文件状态更新的某个资源文件或者某些资源文件。当检测到目录监视列表中的第一资源文件发生状态变更时,获取到目标监视列表对应的监控结果,该监控结果可以是按照目标监视列表对资源目录进行监控时记录下来的监控日志,也可以是从该监控日志中提取出的文件状态变更的资源文件集合,此处不做限定。获取到目录监视列表对应的监控结果之后,根据目录监视列表对应的监控结果可以确定出第一资源文件发生文件状态变更,从该监控结果中可以获取到第一资源文件的文件更新存储路径和第一资源文件的文件名称,其中,第一资源文件的文件更新存储路径是指第一资源文件更新后的文件包的存储地址,第一资源文件的文件名称是该第一资源文件在存储时使用的文件名称,例如可以是按照资源文件的命名规则输出的文件名称,也可以是用户在更改第一资源文件时配置的文件名称,此处不做限定。

在本发明的一些实施例中,步骤103当检测到目录监视列表中的第一资源文件发生状态变更时,根据目录监视列表对应的监控结果获取第一资源文件的文件更新存储路径和第一资源文件的文件名称,包括:

E1、根据目录监视列表对应的监控结果确定目标监视列表中发生状态变更的资源文件为第一资源文件;

E2、向重新加载监听器发送事件消息,事件消息包括:第一资源文件的文件更新存储路径和第一资源文件的文件名称;

E3、通过重新加载监听器解析事件消息确定文件更新存储路径和文件名称。

其中,在本发明的一些实施例中,可以通过重新加载监听器来完成对资源文件的重新加载,先通过目录监视列表对应的监控结果分析出目录监视列表中的第一资源文件发生了状态变更,重新加载监听器的执行逻辑为先接收事件消息,然后从事件消息中获取到文件更新存储路径和文件名称,则重新加载监听器通过文件更新存储路径和文件名称获取到第一资源文件发生状态更新,则通过重新加载监听器可以对该第一资源文件进行重新加载,例如重新加载监听器可以完成后续步骤104中的资源重加载过程。

104、根据文件更新存储路径和文件名称将更新后的第一资源文件加载到内存中,并使用更新后的第一资源文件替换掉资源文件映射表中更新前的第一资源文件。

在本发明实施例,获取到第一资源文件的文件更新存储路径和文件名称之后,通过第一资源文件的文件名称按照该文件更新存储路径可以读取到更新后的第一资源文件,将更新后的第一资源文件加载到内存中,从而可以内存中的存储空间地址读取到更新后的第一资源文件,然后根据第一资源文件的更新结果来维护资源文件映射表,按照第一资源文件的更新结果对资源文件映射表进行实时更新。本发明实施例中资源文件映射表是用于资源文件的实时读取,通过资源文件映射表中对更新前的第一资源文件的替换操作,使得资源文件映射表能够保存最新的资源文件信息,当需要使用第一资源文件时可以通过访问资源文件映射表来获取到最新的第一资源文件。本发明实施例中更新后的第一资源文件被加载到内存中,通过对内存中的资源文件映射表的实时维护,可以实现资源文件映射表中的资源文件的自动更新,从而在访问资源文件映射表时可以得到所有资源文件的最新文件内容,不需要退出正在运营的程序就可以完成资源文件的热下载。

在本发明的一些实施例中,步骤104中的使用更新后的第一资源文件替换掉资源文件映射表中更新前的第一资源文件,包括:

F1、根据文件更新存储路径和文件名称获取更新后的第一资源文件的标识符,将资源文件映射表中更新前的第一资源文件的标识符替换为更新后的第一资源文件的标识符。

其中,资源文件映射表中资源文件的映射关系通过资源文件的标识符来确定,通过前述步骤103获取到第一资源文件的文件更新存储路径和文件名称后,通过文件更新存储路径和文件名称按照映射规则可以确定出资源文件的标识符,然后对资源文件映射表中的更新前后的第一资源文件的标识符进行替换,从而资源文件映射表中的第一资源文件的标识符的替换,通过资源文件映射表可以获取到在内存中加载的最新的第一资源文件,从而可以实现资源文件有状态更新时的热加载。

在本发明的一些实施例中,步骤104使用更新后的第一资源文件替换掉资源文件映射表中更新前的第一资源文件之后,本发明实施例提供的资源文件的加载方法还可以包括:

G1、从资源文件映射表中读取更新后的第一资源文件,在资源应用界面中显示更新后的第一资源文件。

其中,在资源文件映射表中完成第一资源文件的状态变更之后,当用户需要使用第一资源文件时,可以从资源文件映射表中读取最新的第一资源文件,资源应用界面为资源文件的加载显示界面,可以在资源应用界面中显示更新后的第一资源文件,资源应用界面中显示的第一资源文件为热加载完成后的第一资源文件,从而不需要退出加载有资源文件的应用程序,就可以完成在该应用程序中实现对资源文件的热加载。

通过以上实施例对本发明实施例的描述可知,首先将需要监视的资源目录注册到目录监视列表中,资源目录包括:至少一个资源文件,然后对目录监视列表中的资源目录进行文件状态变更监控,当检测到目录监视列表中的第一资源文件发生状态变更时,根据目录监视列表对应的监控结果获取第一资源文件的文件更新存储路径和第一资源文件的文件名称,最后根据文件更新存储路径和文件名称将更新后的第一资源文件加载到内存中,并使用更新后的第一资源文件替换掉资源文件映射表中更新前的第一资源文件。本发明实施例中可以通过目标监视列表对资源目录进行监视,当有第一资源文件发生状态变更时,将更新后的第一资源文件加载到内存中,通过读取到内存中的更新后的第一资源文件实现对资源文件映射表中的第一资源文件的更新,上述第一资源文件的加载并不需要退出正在运行的程序,通过资源文件映射表就可以快速浏览到更新后的第一资源文件,本发明实施例中可以实现对资源文件的热加载,无需退出正在运行的程序即可完成资源文件的加载过程。

为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。本发明实施例中可以实现资源文件的热加载,接下来以游戏应用程序中资源文件的热加载为例进行详细举例说明。在游戏运行中,资源文件的状态改变生成一个状态变更事件,游戏中的资源监听程序收到这个事件,从事件中检索出文件更新存储路径和文件名,再次加载资源文件,实现文件改动重新加载的功能。很多类型的资源文件都可以进行热加载,例如,本发明实施例中的资源文件可以包括:图片、模型、关卡几何体、脚本、游戏角色、声音和动画等,只需几秒钟的时间,就可以完成一次反复调整的过程,最终带来更完美的游戏产品。

本发明实施例中,对需要重新加载的资源文件在游戏启动时,把所在的资源目录注册到目录监视列表中,当资源文件的状态发生变化时,生成一个事件,当资源管理器中接收到这个事件时,从事件中检索出文件名和文件更新存储路径,然后根据文件更新存储路径启动资源文件的重新加载,最后根据文件更新存储路径到具体的资源文件映射表替换原来的资源文件,实现资源标识符的重新绑定。实现了当资源文件的状态改变时,不用退出游戏程序,就可以实现资源的自动重新加载。

本发明实施例提供的资源文件的加载方法可以内嵌在游戏开发工作流中,但各个资源文件的加载方式不同,表格数据存放在数据库表格中,修改后,需要调用资源转换工具ResConvert生成二进制(英文名称:bin)文件,其他的一些资源文件,如属性配置文件(例如:psheet)、行为树,脚本和json(英文全称:javascript object notation)文件等,只要文件状态发生改变,运行中的游戏会自动启动重新加载程序。

接下来以json文件的热加载为例进行说明,json文件属于AS(英文全称:ActionScript)脚本中用户界面(英文全称:User Interface,英文简称:UI)界面资源的配置文件,在游戏启动时自动加载,在游戏运行中,当资源文件的修改保存后,AS的资源管理器会接受到由文件监视器发送的文件修改事件,然后自动重新加载,替换掉原来旧的资源文件。在游戏中,对使用json文件数据的界面,重新打开读取最新的配置信息。举例说明如下,可以编写如下代码:

通过上述代码把界面上显示的字符串信息配置在了json文件中,当修改了字符串内容并保存时,重新打开界面,就可以马上看到修改后的内容为:可随机获得一本低阶或中阶的技能书。

接下来请参阅图2所示,图2为本发明实施例提供的资源文件的热加载实现流程示意图。以资源文件的热加载的工作流程进行典型情形的示意说明,在图2中,资源文件的热加载被集成到工作流中,以及系统的各个不同的部分是如何彼此交互的,相关的步骤主要包括如下:

1、注册资源目录,把需要监视的资源目录注册到文件监视器的目录监视列表中。

2、资源编辑工具修改并保存了资源文件,如:json、btree和psheet等,例如修改后的资源文件为:Asset0.bin、Asset1.json、Asset2.btree、Asset3.psheet。

3、文件监视器(File Watcher)检测到它所监视的某个资源目录中有一个资源文件被改动了。然后通过事件消息(GE_FILE_CHANGED)把更新文件的更新存储路径和文件名称发送给重新加载监听器。

4、重新加载监听器通过监听事件接收到这个消息。然后从消息中检索到文件更新存储路径和文件名称,随后就启动资源文件的重新加载过程。

5、新改动的资源文件被加载到内存中,通过资源映射表找到旧资源文件的标识符,并在资源映射表中替换它的位置,原先那个旧资源文件已经过时了,从内存中移除,在内存中只保留新资源文件。

6、在接下来的游戏运行过程中,在使用该资源文件的地方就开始使用这个新的资源文件数据了。

本发明实施例中,资源文件被修改单击保存到这个新的资源文件在游戏中使用,所用的时间是非常短的,通常不到1秒钟的时间,系统就能使用新的资源文件,并马上看到修改后的文件加载效果。对于大型的游戏资源,或者重新加载需要的系统开销过大,时间相对会长一些,但也很少会超过几秒钟。

接下来对本发明实施例中资源文件热加载过程进行举例说明。在资源文件的热加载中,主要涉及3个主要的元素:文件监视器、重新加载监听器,以及重新绑定资源文件。

首先对文件监视器进行详细说明,文件监视器的工作是监视已创建资源的目录,并在任何文件发生变化时,通知重新加载监听程序。在游戏启动时,把需要监视的目录注册到目录监视列表中,例如文件监视器可以执行如下的配置逻辑:

//配置信息

GeFileWatcher::GetInstance().AddWatch("..\\Data\\Config",true);

//行为树

GeFileWatcher::GetInstance().AddWatch("..\\Data\\Btree",true);

//属性表

GeFileWatcher::GetInstance().AddWatch("..\\Data\\PropSheet",true);

//Bin表

GeFileWatcher::GetInstance().AddWatch("..\\Data\\Table",true);

//swf或者gfx

GeFileWatcher::GetInstance().AddWatch("..\\Data\\UI",true);

创建一个资源文件(该文件需要热加载)时,需要放置在文件监视器所监视的某个资源目录中。文件监视器在另一个线程中运行,一直在不停地监视注册的资源目录,当修改保存某个资源文件时,它就会注意到有一个写文件的操作发生了,并将这个改动通过事件发送给重新加载监听器。

监视文件可以通过操纵系统专有的文件事件函数注册文件,当某个目录下的某个文件发生变化时,它就可以发送一个相应的事件,例如在Win32系统上的实现使用了ReadDirectoryChangesW函数。ReadDirectoryChangesW函数将一个目录与一个事件关联起来。当这个目录中的文件发生变化时(执行任何文件操作时),就会发生相应的信号。文件监视器通过GetOverlappedResult函数,每200毫秒就轮询一次这个事件,看它是否发生。如果返回值为True,意味着目标目录中有一个文件发生了变化。多个发生变化的文件集合用一个大型的char buffer返回,这个char buffer的内容是结构体FILE_NOTIFY_INFORMATION定义的内容,只有那些事件类型为FILE_ACTION_MODIFIED表项才会被处理,表明它们刚刚被写入磁盘。

处理完所有改动过的资源文件,通过事件(GE_FILE_CHANGED)并将它们发送给重新加载监听器,其中使用的逻辑代码可以为:

GeVariantMap params;

params["FilePath"]=GeStr(fullFilePath.CString());//文件路径

params["Ext"]=GeStr(fileExtension.CString());//文件扩展名后缀

//发生事件

GeEventService::Get().FireEvent(GE_FILE_CHANGED,params);

当发送完毕后,文件监视器必须要再次调用ReadDirectoryChangesW函数来启动新的监听过程,开始事件监听周期。

接下来对重新加载监听器进行详细说明,重新加载监听器可以是一些C++类的集合,每一个类管理一种资源类型,监听事件(GE_FILE_CHANGED)实现资源的重新加载。重新加载监听器注册监听文件修改事件,来准备接受来自文件监视器的事件通知,一旦有通知发布过来,就启动一个特定资源重加载的过程。为了能够正确地完成自己的工作,重新加载监听器从事件中获得文件更新存储路径和文件名称,实现资源文件的重新加载。

接下来对资源文件的重新绑定进行说明,当资源文件重新加载后,需要替换掉旧的资源文件,对于一些简单的资源文件,对它们的属性进行重新赋值就可以解决,像纹理或音效之类的资源,使用句柄代表它们,当这类的资源文件重新加载后,需要根据资源文件的更新存储路径到句柄映射表,查找到旧资源文件的句柄,接着把新的句柄值替换掉旧的资源文件句柄值,在以后的游戏运行中,系统就可以使用新的资源文件了。

本发明实施例中,资源文件的热加载技术可以大大降低游戏进行反复调整所用的时间,对大部分最通用的资源文件实现热加载功能,以最小的工作量获得最大的回报。资源文件的热加载采用了消息发布-订阅模式进行设计,减少了热加载代码和系统其他模块之间的耦合。热加载功能只需要在开发过程中使用,为了禁止热加载代码对游戏发布之后的影响(如:黑客利用更新机制实现游戏外挂)和减少正式版本的编译速度,在游戏正式发行之前,可以用#ifdefs语句,很容易地将这些代码移除。

本发明实施例中资源文件的热加载技术可以在修改资源文件后,不必退出重启游戏程序,便可以看到修改后的文件加载结果,从而实现对游戏快速、轻松地反复调整,极大的提高了游戏开发的速度。需要说明的是,在本发明实施例中同样使用热加载技术,可能减少或增加不同的文件改动步骤,如利用转换工具把文件转换为另一种文件格式,然后对新的文件状态改变生成事件消息。本发明实施例中的方法可以用于加载其他任何形式的资源,如二进制文件,纹理文件等。本发明实施例中的文件状态变化通知可以用其他的方式,如使用网络协议,或者命令模式。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。

请参阅图3-a所示,本发明实施例提供的一种资源文件的加载装置300,可以包括:目录注册模块301、状态监控模块302、获取模块303和资源更新模块304,其中,

目录注册模块301,用于将需要监视的资源目录注册到目录监视列表中,所述资源目录包括:至少一个资源文件;

状态监控模块302,用于对所述目录监视列表中的资源目录进行文件状态变更监控;

获取模块303,用于当检测到所述目录监视列表中的第一资源文件发生状态变更时,根据所述目录监视列表对应的监控结果获取所述第一资源文件的文件更新存储路径和所述第一资源文件的文件名称;

资源更新模块304,用于根据所述文件更新存储路径和所述文件名称将更新后的第一资源文件加载到内存中,并使用所述更新后的第一资源文件替换掉资源文件映射表中更新前的第一资源文件。

在本发明的一些实施例中,所述目录注册模块301,具体用于将需要监视的资源目录注册到文件监视器的目标监视列表中;

所述状态监控模块302,具体用于通过所述文件监视器检测所述目录监视列表中的资源目录中是否有资源文件的文件状态发生变更。

在本发明的一些实施例中,请参阅图3-b所示,所述状态监控模块302,包括:

事件关联模块3021,用于将所述目标监视列表中的资源目录与状态变更事件关联起来;

事件发生判断模块3022,用于按照预置的轮询周期判断所述状态变更事件是否发生,当所述状态变更事件发生时,根据所述目录监视列表对应的监控结果确定所述目标监视列表中发生状态变更的资源文件,当所述状态变更事件没有发生时,确定所述目标监视列表中没有资源文件发生状态变更。

在本发明的一些实施例中,请参阅图3-c所示,所述获取模块303,包括:

结果分析模块3031,用于根据所述目录监视列表对应的监控结果确定所述目标监视列表中发生状态变更的资源文件为第一资源文件;

发送模块3032,用于向重新加载监听器发送事件消息,所述事件消息包括:所述第一资源文件的文件更新存储路径和所述第一资源文件的文件名称;

事件消息解析模块3033,用于通过所述重新加载监听器解析所述事件消息确定所述文件更新存储路径和所述文件名称。

在本发明的一些实施例中,所述资源更新模块304,具体用于根据所述文件更新存储路径和所述文件名称获取所述更新后的第一资源文件的标识符,将所述资源文件映射表中更新前的第一资源文件的标识符替换为所述更新后的第一资源文件的标识符。

在本发明的一些实施例中,请参阅图3-d所示,所述资源文件的加载装置300,还包括:文件显示模块305,用于所述资源更新模块304使用所述更新后的第一资源文件替换掉资源文件映射表中更新前的第一资源文件之后,从所述资源文件映射表中读取所述更新后的第一资源文件,在资源应用界面中显示所述更新后的第一资源文件。

通过以上对本发明实施例的描述可知,首先将需要监视的资源目录注册到目录监视列表中,资源目录包括:至少一个资源文件,然后对目录监视列表中的资源目录进行文件状态变更监控,当检测到目录监视列表中的第一资源文件发生状态变更时,根据目录监视列表对应的监控结果获取第一资源文件的文件更新存储路径和第一资源文件的文件名称,最后根据文件更新存储路径和文件名称将更新后的第一资源文件加载到内存中,并使用更新后的第一资源文件替换掉资源文件映射表中更新前的第一资源文件。本发明实施例中可以通过目标监视列表对资源目录进行监视,当有第一资源文件发生状态变更时,将更新后的第一资源文件加载到内存中,通过读取到内存中的更新后的第一资源文件实现对资源文件映射表中的第一资源文件的更新,上述第一资源文件的加载并不需要退出正在运行的程序,通过资源文件映射表就可以快速浏览到更新后的第一资源文件,本发明实施例中可以实现对资源文件的热加载,无需退出正在运行的程序即可完成资源文件的加载过程。

本发明实施例还提供了另一种终端,如图4所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:

图4示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图4,手机包括:射频(Radio Frequency,RF)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(wireless fidelity,WiFi)模块1070、处理器1080、以及电源1090等部件。本领域技术人员可以理解,图4中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图4对手机的各个构成部件进行具体的介绍:

RF电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1080处理;另外,将设计上行的数据发送给基站。通常,RF电路1010包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路1010还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communication,GSM)、通用分组无线服务(General Packet Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。

存储器1020可用于存储软件程序以及模块,处理器1080通过运行存储在存储器1020的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

输入单元1030可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1080,并能接收处理器1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给处理器1080以确定触摸事件的类型,随后处理器1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图4中,触控面板1031与显示面板1041是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现手机的输入和输出功能。

手机还可包括至少一种传感器1050,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路1060、扬声器1061,传声器1062可提供用户与手机之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出处理器1080处理后,经RF电路1010以发送给比如另一手机,或者将音频数据输出至存储器1020以便进一步处理。

WiFi属于短距离无线传输技术,手机通过WiFi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了WiFi模块1070,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

处理器1080是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1080可包括一个或多个处理单元;优选的,处理器1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1080中。

手机还包括给各个部件供电的电源1090(比如电池),优选的,电源可以通过电源管理系统与处理器1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。

在本发明实施例中,该终端所包括的处理器1080还具有控制执行以上由终端执行的的资源文件的加载方法步骤。

另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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