CN110007925A - 一种提升应用程序运行性能的方法及装置 - Google Patents
一种提升应用程序运行性能的方法及装置 Download PDFInfo
- Publication number
- CN110007925A CN110007925A CN201910258161.3A CN201910258161A CN110007925A CN 110007925 A CN110007925 A CN 110007925A CN 201910258161 A CN201910258161 A CN 201910258161A CN 110007925 A CN110007925 A CN 110007925A
- Authority
- CN
- China
- Prior art keywords
- note
- class file
- routing table
- application program
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Abstract
本申请公开了一种提升应用程序运行性能的方法及装置。首先获取代码工程中各个模块中标注类文件的注解,其中每个所述类文件具有唯一对应的注解;其后,在所述代码工程的编译过程中,根据所述注解生成路由表,该路由表中包含所述类文件与所述注解的对应关系。由于该路由表是在编译过程中生成,可在代码工程对应的应用程序运行时直接调用,因此不会消耗应用程序运行时的性能。同时,该方法借助路由表中的对应关系,解决了模块间类文件的依赖问题。从而,相比于现有技术,本申请应用程序运行时的性能得到显著提高,提升用户的使用体验。
Description
技术领域
本申请涉及软件工程技术领域,特别是涉及一种提升应用程序运行性能的方法及装置。
背景技术
应用程序运行过程中,当需要进行页面跳转时,例如从A页面跳转至B页面,如果实现B页面的类文件不属于A页面所在的模块中,则需要引入实现B页面的类文件。由此,呈现出不同模块之间类文件依赖的现象。如果应用程序的模块众多时,还可能产生模块之间交叉依赖的问题。
目前,可以采用在应用程序启动时生成映射表的方式解决模块间的类文件依赖问题。映射表中,页面名称与实现页面的类之间相互对应。但是该方法存在明显的弊端,在应用程序启动阶段生成映射表将消耗应用程序运行时的性能,导致应用程序运行过程中性能下跌。从用户角度上,将体验到应用程序运行时卡顿频繁。可见,该方法严重影响用户的使用体验。
发明内容
基于上述问题,本申请提供了一种提升应用程序运行性能的方法及装置,解决模块间的类文件依赖问题,同时保证应用程序的运行性能。
本申请实施例公开了如下技术方案:
第一方面,本申请提供一种提升应用程序运行性能的方法,包括:
获取代码工程中各个模块中标注类文件的注解;每个所述类文件具有唯一对应的注解;
在所述代码工程的编译过程中,根据所述注解生成路由表;所述路由表中包含所述类文件与所述注解的对应关系;
所述路由表用于在所述代码工程对应的应用程序运行时直接调用。
可选地,在所述获取代码工程中各个模块中标注类文件的注解之前,所述方法还包括:
为每个所述类文件添加一个标注所述类文件的注解。
可选地,所述获取代码工程中各个模块中标注类文件的注解,具体包括:
利用注解处理器工具扫描获得代码工程中各个模块中标注类文件的注解。
可选地,在所述代码工程对应的应用程序运行时直接调用所述路由表,具体包括:
根据所需的类文件对应的注解,以及所述路由表,跳转至所述类文件。
可选地,所述注解为字符串。
可选地,所述路由表为HashMap集合类。
第二方面,本申请提供一种提升应用程序运行性能的装置,包括:注解获取模块,路由表生成模块和调用模块;
所述注解获取模块,用于获取代码工程中各个模块中标注类文件的注解;每个所述类文件具有唯一对应的注解;
所述路由表生成模块,用于在所述代码工程的编译过程中,根据所述注解生成路由表;所述路由表中包含所述类文件与所述注解的对应关系;
所述路由表用于在所述代码工程对应的应用程序运行时由所述调用模块直接调用。
可选地,装置还包括:
注解添加模块,用于为每个所述类文件添加一个标注所述类文件的注解。
可选地,所述注解获取模块,具体包括:
第一获取单元,用于利用注解处理器工具扫描获得代码工程中各个模块中标注类文件的注解。
可选地,所述调用模块,具体包括:
第一调用单元,用于根据所需的类文件对应的注解,以及所述路由表,跳转至所述类文件。
相较于现有技术,本申请具有以下有益效果:
本申请提供的提升应用程序运行性能的方法,首先获取代码工程中各个模块中标注类文件的注解,其中每个所述类文件具有唯一对应的注解;其后,在所述代码工程的编译过程中,根据所述注解生成路由表,该路由表中包含所述类文件与所述注解的对应关系。由于该路由表是在编译过程中生成,可在代码工程对应的应用程序运行时直接调用,因此不会消耗应用程序运行时的性能。同时,该方法借助路由表中的对应关系,解决了模块间类文件的依赖问题。从而,相比于现有技术,本申请应用程序运行时的性能得到显著提高,提升用户的使用体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种提升应用程序运行性能的方法的流程图;
图2为本申请实施例提供的一种代码工程模块示意图;
图3为本申请实施例提供的一种路由表内容示意图;
图4为本申请实施例提供的一种提升应用程序运行性能的装置的结构示意图;
图5为本申请实施例提供的另一种提升应用程序运行性能的装置的结构示意图。
具体实施方式
正如前文描述,目前可以通过应用程序启动时生成映射表的方式解决多个模块间类文件依赖的问题。但是该方法具体是通过java的反射机制生成映射表,由于反射的工程非常消耗性能,因此导致应用程序运行过程中性能下跌,同时造成用户的使用体验下降。
基于此,发明人经过研究,提供了一种提升应用程序运行性能的方法,该方法在编译阶段生成路由表。该路由表在应用程序运行过程中可以直接调用,解决模块间的类文件依赖问题,相比于现有技术,能够提升应用程序的运行性能,提升用户体验。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
方法实施例
参见图1,该图为本申请实施例提供的一种提升应用程序运行性能的方法的流程图。
如图1所示,本申请实施例提供的提升应用程序运行性能的方法,包括:
步骤101:获取代码工程中各个模块中标注类文件的注解。
为实现应用程序的丰富功能,代码工程中通常包含多个模块,每个模块包含实现每个页面的类文件。参见图2,该图为本实施例提供的一种代码工程模块示意图。如图2所示,代码工程中包含多个模块,例如图2中白框中所示的aboutus模块、app模块、branchmoudule模块和calculationrules模块等。每个模块之下为该模块实现每个页面的类文件。类文件中包含页面的逻辑。从Java编程的角度,一个页面就相当于一个类文件。
需要说明的是,代码工程中每个类文件被预先添加了一个用于标注该类文件的唯一对应的注解。例如,为类文件a的添加的注解为Key_a;为类文件b添加的注解为Key_b;为类文件c添加的注解为Key_c。
作为一种可能的实现形式,为代码工程中类文件标注的注解可以是字符串String形式。当然,还可以是其他形式,本实施例中对于注解的具体形式不加以限定。
本步骤在具体实现时,可以采用注解处理器(Annotation Processing Tool,APT)获取注解。APT是javac的一种工具,可用于在编译时扫描和处理注解。因此通过APT的扫描可以获得各个类文件的注解。当然,APT仅是一种示例性的实现工具,在具体应用时还可能采用其他方式实现本步骤,因此此处对于步骤101的具体实现方式不加以限定。
步骤102:在所述代码工程的编译过程中,根据所述注解生成路由表,所述路由表中包含所述类文件与所述注解的对应关系。
在具体实现是,可以采用APT根据扫描到的注解生成包含类文件与注解对应关系的路由表。
为便于理解,可参见图3,该图为本申请实施例提供的一种路由表内容示意图。图3中,AppRouteTable 301即表示路由表,路由表301的具体内容可参见图中区域302。
通过图3可知,路由表301中包含:
类文件FirstCarHelpActivity.class与其注解FirstCarHelpActivity的对应关系;
类文件DeepDriveActivity.class与其注解deepDrive的对应关系;
类文件WeexActivity.class与其注解weexPage的对应关系;
类文件FavorableListPopupActivity.class与其注解favorableList的对应关系;
类文件SwitchCityActivity.class与其注解switchCity的对应关系;
类文件AdvertiseListActivity.class与其注解advertise的对应关系;
类文件CrashActivity.class与其注解crashPage的对应关系;
类文件MapWindowActivity.class与其注解mainWindow的对应关系。
在路由表301中,不同的类文件用于实现不同的页面功能。可以理解的是,图3所示仅为一则路由表内容的展示示例。在实际应用中,根据应用程序所需实现的功能需求的不同,路由表中可能存在实现相应功能页面的类文件与其注解的对应关系。因此,本实施例中对于路由表中包含的对应关系的数目,相互对应的注解名称与类文件名称等,均不加以限定。
作为一种可能的实现方式,本步骤中生成的路由表可以是一个HashMap集合类。在HashMap集合类形式的路由表中,注解相当于key,而注解对应的类文件相当于key所对应的value。
由于各个模块类文件与注解的对应关系由映射表管理,因此,当具有页面跳转需求时,可以通过注解直接实现跳转。即生成的该路由表可用于在所述代码工程对应的应用程序运行时直接调用。
在具体实现是,可以根据所需的类文件对应的注解,以及所述路由表,跳转至所需的类文件。
例如,通过代码工程中“mainWindow”这一注解,直接完成从当前页面至MapWindowActivity.class这一类文件对应的页面的跳转。而无需在当前模块中引入这一类文件,即避免了模块之间类文件的依赖问题。
以上即为本申请实施例提供的提升应用程序运行性能的方法。该方法首先获取代码工程中各个模块中标注类文件的注解,其中每个所述类文件具有唯一对应的注解;其后,在所述代码工程的编译过程中,根据所述注解生成路由表,该路由表中包含所述类文件与所述注解的对应关系。
由于该路由表是在编译过程中生成,可在代码工程对应的应用程序运行时直接调用,因此不会消耗应用程序运行时的性能,提升运行效率。同时,该方法借助路由表中的对应关系,解决了模块间类文件的依赖问题。从而,相比于现有技术,本申请应用程序运行时的性能得到显著提高,提升用户的使用体验。
可以理解的是,在实际应用中,应用程序进行版本更新前后,模块中需要展现的各个页面其跳转次序可能发生变化。例如,版本更新前,从某模块中页面A向另一模块的页面B跳转;版本更新后,从某模块中页面A向另一模块的页面C跳转。因此,预先在代码工程中,根据更新需求将实现页面B的类文件对应的注解修改为实现页面C的类文件对应的注解。从而,当应用程序版本更新后运行时,实现从页面A向页面C的跳转。
基于前述实施例,相应地,本申请还提供一种提升应用程序运行性能的装置。下面结合实施例和附图对该装置的具体实现进行描述。
装置实施例
参见图4,该图为本申请实施例提供的一种提升应用程序运行性能的装置的结构示意图。
如图4所示,本实施例提供的提升应用程序运行性能的装置,包括:
注解获取模块401,路由表生成模块402和调用模块403;
所述注解获取模块401,用于获取代码工程中各个模块中标注类文件的注解;每个所述类文件具有唯一对应的注解;
所述路由表生成模块402,用于在所述代码工程的编译过程中,根据所述注解生成路由表;所述路由表中包含所述类文件与所述注解的对应关系;
所述路由表用于在所述代码工程对应的应用程序运行时由所述调用模块403直接调用。
以上即为本申请实施例提供的提升应用程序运行性能的装置。由于路由表是在编译过程中生成,可在代码工程对应的应用程序运行时直接调用,因此不会消耗应用程序运行时的性能,提升运行效率。同时,该装置借助路由表中的对应关系,解决了模块间类文件的依赖问题。从而,相比于现有技术,本申请应用程序运行时的性能得到显著提高,提升用户的使用体验。
在上述装置实施例的基础上,进一步地,本申请还提供另一种提升应用程序性能的装置。参见图5,该图为本实施例提供的另一种提升应用程序性能的装置的结构示意图。
通过图5可知,该装置中,除包括上述实施例中提及的注解获取模块401,路由表生成模块402和调用模块403以外,还包括:
注解添加模块400,该模块400用于为每个所述类文件添加一个标注所述类文件的注解。
注解添加模块400通过为类文件添加注解,便利于后续路由表生成模块402根据这些注解以及注解与类文件生成路由表。
作为一种可能的实现方式,上述提升应用程序运行性能的装置中,所述注解获取模块401,具体可以包括:
第一获取单元,用于利用注解处理器工具扫描获得代码工程中各个模块中标注类文件的注解。
为便于理解路由表的作用,以及调用模块403的具体实现流程,作为一种可能的实现方式,上述提升应用程序运行性能的装置中,所述调用模块403,具体可以包括:
第一调用单元,用于根据所需的类文件对应的注解,以及所述路由表,跳转至所述类文件。
可以理解的是,在实际应用中,应用程序进行版本更新前后,模块中需要展现的各个页面其跳转次序可能发生变化。例如,版本更新前,从某模块中页面A向另一模块的页面B跳转;版本更新后,从某模块中页面A向另一模块的页面C跳转。因此,本实施例中,注解添加模块400还可以预先在代码工程中,根据更新需求将实现页面B的类文件对应的注解修改为实现页面C的类文件对应的注解。从而,当应用程序版本更新后运行时,实现从页面A向页面C的跳转。即本实施例中,注解添加模块400具备为模块中的类文件添加注解、修改注解以及删除注解的功能。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元提示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种提升应用程序运行性能的方法,其特征在于,包括:
获取代码工程中各个模块中标注类文件的注解;每个所述类文件具有唯一对应的注解;
在所述代码工程的编译过程中,根据所述注解生成路由表;所述路由表中包含所述类文件与所述注解的对应关系;
所述路由表用于在所述代码工程对应的应用程序运行时直接调用。
2.根据权利要求1所述的方法,其特征在于,在所述获取代码工程中各个模块中标注类文件的注解之前,所述方法还包括:
为每个所述类文件添加一个标注所述类文件的注解。
3.根据权利要求1所述的方法,其特征在于,所述获取代码工程中各个模块中标注类文件的注解,具体包括:
利用注解处理器工具扫描获得代码工程中各个模块中标注类文件的注解。
4.根据权利要求1所述的方法,其特征在于,在所述代码工程对应的应用程序运行时直接调用所述路由表,具体包括:
根据所需的类文件对应的注解,以及所述路由表,跳转至所述类文件。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述注解为字符串。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述路由表为HashMap集合类。
7.一种提升应用程序运行性能的装置,其特征在于,包括:注解获取模块,路由表生成模块和调用模块;
所述注解获取模块,用于获取代码工程中各个模块中标注类文件的注解;每个所述类文件具有唯一对应的注解;
所述路由表生成模块,用于在所述代码工程的编译过程中,根据所述注解生成路由表;所述路由表中包含所述类文件与所述注解的对应关系;
所述路由表用于在所述代码工程对应的应用程序运行时由所述调用模块直接调用。
8.根据权利要求7所述的装置,其特征在于,还包括:
注解添加模块,用于为每个所述类文件添加一个标注所述类文件的注解。
9.根据权利要求7所述的装置,其特征在于,所述注解获取模块,具体包括:
第一获取单元,用于利用注解处理器工具扫描获得代码工程中各个模块中标注类文件的注解。
10.根据权利要求7所述的装置,其特征在于,所述调用模块,具体包括:
第一调用单元,用于根据所需的类文件对应的注解,以及所述路由表,跳转至所述类文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910258161.3A CN110007925A (zh) | 2019-04-01 | 2019-04-01 | 一种提升应用程序运行性能的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910258161.3A CN110007925A (zh) | 2019-04-01 | 2019-04-01 | 一种提升应用程序运行性能的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110007925A true CN110007925A (zh) | 2019-07-12 |
Family
ID=67169304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910258161.3A Pending CN110007925A (zh) | 2019-04-01 | 2019-04-01 | 一种提升应用程序运行性能的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110007925A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112083930A (zh) * | 2020-09-14 | 2020-12-15 | 华帝股份有限公司 | 安卓项目编译过程的优化方法 |
CN112769706A (zh) * | 2020-12-24 | 2021-05-07 | 平安银行股份有限公司 | 组件化路由方法及系统 |
CN112925562A (zh) * | 2021-02-19 | 2021-06-08 | 京东方科技集团股份有限公司 | 基于安卓系统的应用生成的方法、装置及存储介质 |
CN114168111A (zh) * | 2021-12-07 | 2022-03-11 | 北京五八信息技术有限公司 | 组件化路由实现方法、设备、产品及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080313234A1 (en) * | 2004-02-10 | 2008-12-18 | International Business Machines Corporation | Efficient xml schema validation of xml fragments using annotated automaton encoding |
CN108279941A (zh) * | 2016-12-31 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种应用程序的压缩方法和装置 |
CN108536436A (zh) * | 2018-03-15 | 2018-09-14 | 链家网(北京)科技有限公司 | Android系统基于URI的方法级别路由方法及装置 |
-
2019
- 2019-04-01 CN CN201910258161.3A patent/CN110007925A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080313234A1 (en) * | 2004-02-10 | 2008-12-18 | International Business Machines Corporation | Efficient xml schema validation of xml fragments using annotated automaton encoding |
CN108279941A (zh) * | 2016-12-31 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种应用程序的压缩方法和装置 |
CN108536436A (zh) * | 2018-03-15 | 2018-09-14 | 链家网(北京)科技有限公司 | Android系统基于URI的方法级别路由方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112083930A (zh) * | 2020-09-14 | 2020-12-15 | 华帝股份有限公司 | 安卓项目编译过程的优化方法 |
CN112769706A (zh) * | 2020-12-24 | 2021-05-07 | 平安银行股份有限公司 | 组件化路由方法及系统 |
CN112769706B (zh) * | 2020-12-24 | 2023-03-24 | 平安银行股份有限公司 | 组件化路由方法及系统 |
CN112925562A (zh) * | 2021-02-19 | 2021-06-08 | 京东方科技集团股份有限公司 | 基于安卓系统的应用生成的方法、装置及存储介质 |
WO2022174613A1 (zh) * | 2021-02-19 | 2022-08-25 | 京东方科技集团股份有限公司 | 基于安卓系统的应用生成的方法、装置及存储介质 |
CN114168111A (zh) * | 2021-12-07 | 2022-03-11 | 北京五八信息技术有限公司 | 组件化路由实现方法、设备、产品及存储介质 |
CN114168111B (zh) * | 2021-12-07 | 2024-04-05 | 北京五八信息技术有限公司 | 组件化路由实现方法、设备、产品及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110007925A (zh) | 一种提升应用程序运行性能的方法及装置 | |
CN1313920C (zh) | 一种基于统一构件封装件结构的构件组装方法 | |
CN108765158A (zh) | 一种基于区块链的智能合约引擎系统及其合约执行方法 | |
CN105159718B (zh) | 固件升级方法及装置 | |
CN111258559B (zh) | 一种基于React Native的混合应用多级页面路由跳转方法 | |
CN110888842A (zh) | 一种文件存储方法、文件查询方法、装置及设备 | |
CN1504881A (zh) | 爪哇执行设备和爪哇执行方法 | |
CN105068802B (zh) | 一种跨设备运行的Web应用软件实现系统和方法 | |
CN101706725A (zh) | 一种可重定位程序的加载及调试方法及系统 | |
CN111045668B (zh) | 一种跨平台的移动端系统开发方法及装置 | |
CN111381817A (zh) | 实现跨平台多语言开发的方法、装置、介质和电子设备 | |
CN104182234A (zh) | 一种业务处理方法和业务系统 | |
CN1614927A (zh) | 在b/s结构中实现树型结构的方法 | |
CN103440136A (zh) | 分布式编译的方法及系统 | |
ATE520077T1 (de) | Betriebsmittelverwaltung | |
CN1719786A (zh) | 数据通讯设备命令行接口命令的自动测试系统及测试方法 | |
CN1975739A (zh) | 报表生成方法、设备及系统 | |
RU2011108110A (ru) | Управление дескриптором типа для замороженных объектов | |
CN110955540A (zh) | 插件交互方法 | |
RU2008139875A (ru) | Устройство обработки для детектирования определенной компьтерной команды | |
CN108509263A (zh) | 一种后台进程管理方法和系统 | |
CN107832461B (zh) | 一种数据迁移方法及系统 | |
CN104965737A (zh) | 更新数据的获取方法及装置 | |
CN100345413C (zh) | 光网络改造方法 | |
CN110297647B (zh) | 一种前端工程更新npm包的方法及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190712 |