CN106547598A - 提升Android应用程序启动速度的方法 - Google Patents
提升Android应用程序启动速度的方法 Download PDFInfo
- Publication number
- CN106547598A CN106547598A CN201611047968.5A CN201611047968A CN106547598A CN 106547598 A CN106547598 A CN 106547598A CN 201611047968 A CN201611047968 A CN 201611047968A CN 106547598 A CN106547598 A CN 106547598A
- Authority
- CN
- China
- Prior art keywords
- application
- performs
- type
- android
- creates
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种提升Android应用程序启动速度的方法。该方法包括:步骤101,启动APP应用,步骤102,并判断APP应用的启动类型。如果是冷启动类型,则转向步骤,103;如果是热启动类型,则转向步骤107。步骤103,从Android的Zygote中fork创建一个新进程,并分配给此应用。步骤104,创建并初始化Application类。步骤105,执行Application的attachBaseContext()方法。步骤106,执行Application的onCreate()方法。步骤107,创建并初始化MainActivity类。步骤108,执行Activity的onCreate()方法。步骤109,为Activity配置主题、样式等属性。步骤110,执行Activity的onStart()和onResume()方法。步骤111,应用完成启动,显示界面,本发明可以改善用户对Android应用程序的使用体验,提升用户对APP应用的满意度,有较强的实用价值。
Description
技术领域
本发明涉及计算机技领域,具体涉及一种提升Android应用程序启动速度的方法。
背景技术
随着计算机及互联网技术的迅猛发展,智能终端的功能越来越强大,很多智能终端也逐渐用上了操作系统,比如智能手机和智能电视,上面运行着Android操作系统。在这些运行Android系统的智能终端上,人们往往通过下载和安装各种应用程序来满足自己各方面的需求,比如娱乐,又比如阅读。而应用程序的启动速度开始影响用户的情绪和心情,启动速度越快的应用,能给人带来愉悦的感觉;而启动速度很慢的应用,往往会给人带来应用很难用的糟糕体验。在这个用户量会带来商业价值的时代,不能给用户带来愉悦的感觉,就意味着会失去用户,从而最终丢掉商业价值。
对现有技术的研究和分析过程中,我们发现现有改进Android应用的启动速度并没有很好的方法,通常的做法是修改应用的代码,以及通过监测Delvik虚拟机或ART运行时,找出耗资源的方法和进程,加以改进。这些方法耗时耗力,且对Android应用程序的启动速度的改进有限,不能充分改进应用程序的启动速度。
发明内容
本发明克服了现有技术的不足,提供解决一种提升Android应用程序启动速度的方法。
为解决上述的技术问题,本发明采用以下技术方案:
一种提升Android应用程序启动速度的方法,它包括以下步骤:
步骤101,启动APP应用;
步骤102,判断APP应用的启动类型,如果是冷启动类型,则转向步骤103;如果是热启动类型,则转向步骤107;
步骤103,从Android系统的Zygote中fork创建一个新进程,并分配给此应用;
步骤104,创建并初始化Application类;
步骤105,执行Application的attachBaseContext()方法,并去除耗时的操作;
步骤106,执行Application的onCreate()方法,并去除耗时的操作;
步骤107,创建并初始化MainActivity类;
步骤108,执行Activity的onCreate()方法,并去除耗时的操作;
步骤109,为Activity配置主题、样式等属性;
步骤110,执行Activity的onStart()和onResume()方法,同样要避免延迟大的操作;
步骤111,应用完成启动,显示界面。
更进一步的技术方案是,所述步骤102中,判断启动类型的方法为应用自身扫描系统进程和任务列表,看是否有此应用的进程,如果有,则启动类型为热启动;如果没有,则启动类型为冷启动。
与现有技术相比,本发明的有益效果是:
本发明可以改善用户对Android应用程序的使用体验,提升用户对APP应用的满意度,有较强的实用价值。
附图说明
图1为本发明一种实施例的提升Android应用程序启动速度的方法的流程图。
具体实施方式
下面结合附图对本发明作进一步阐述。
如图1所示的一种提升Android应用程序启动速度的方法,该方法主要包括以下步骤:
步骤101,启动APP应用。
步骤102,判断APP应用的启动类型。如果是冷启动类型,则转向步骤103;如果是热启动类型,则转向步骤107。
所述的判断启动类型的方法为应用自身扫描系统进程和任务列表,查看此应用的进程是否存在。如果存在,则启动类型为热启动类型;如果不存在,则启动类型为冷启动类型。
步骤103,从Android的Zygote中fork创建一个新进程,并分配给此应用。
对于Android系统,除开系统引导进程、init进程等,绝大部分进程是由Zygote创建的。Android的Zygote主要有两块,其中一块是C/C++编写的Zygote,主要用于为应用和系统服务fork进程的。另外一块是使用Java语言编写的Zygote接口,负责为应用和服务调用C/C++Zygote的接口以便执行fork,从而完成VM进程的创建。
步骤104,创建并初始化Application类。
Android系统的Application类是一个系统组件。当Android应用程序启动时,系统会自动创建一个Application对象,用于存储系统的一些信息。Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个。
步骤105,执行Application的attachBaseContext()方法,并去除耗时的操作。
本实施例还可以使用异步线程获取预准备的数据。包括使用异步线程同时获取云端REST接口的数据,以及使用异步线程同时获取Android数据库的数据等。
步骤106,执行Application的onCreate()方法,并去除耗时的操作。
步骤107,创建并初始化MainActivity类。
启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。
步骤108,执行Activity的onCreate()方法,并去除耗时的操作。
要检查耗时操作,可以使用Android自带的TraceView工具,使用它来查看线程的执行情况,某个方法执行时间、调用次数、在总体中的占比等,从而定位耗时的操作。
在开始调试的地方,如Activity的onCreate函数,添加
Debug.startMethodTracing("tracefilename");
在结束调试的地方,如Activity的onDestroy函数,添加
Debug.stopMethodTracing();
然后运行APP应用一段时间后并退出,Android系统会在SD存储卡根目录生成tracefilename.trace这个log文件,记录这段时间内的运行信息。分析此日志文件,就能找到耗时的操作。
步骤109,为Activity配置主题、样式等属性。
由于在获取到第一帧前,需要对ContentView进行测量布局绘制操作,尽量减少布局的层次,考虑StubView的延迟加载策略。
步骤110,执行Activity的onStart()和onResume()方法,同样要避免延迟大的操作。
步骤111,应用完成启动,显示界面。
以上具体实施方式对本发明的实质进行详细说明,但并不能对本发明的保护范围进行限制,显而易见地,在本发明的启示下,本技术领域普通技术人员还可以进行许多改进和修饰,需要注意的是,这些改进和修饰都落在本发明的权利要求保护范围之内。
Claims (2)
1.一种提升Android应用程序启动速度的方法,其特征在于,它包括以下步骤:
步骤101,启动APP应用;
步骤102,判断APP应用的启动类型,如果是冷启动类型,则转向步骤103;
如果是热启动类型,则转向步骤107;
步骤103,从Android系统的Zygote中fork创建一个新进程,并分配给此应用;
步骤104,创建并初始化Application类;
步骤105,执行Application的attachBaseContext()方法,并去除耗时的操作;
步骤106,执行Application的onCreate()方法,并去除耗时的操作;
步骤107,创建并初始化MainActivity类;
步骤108,执行Activity的onCreate()方法,并去除耗时的操作;
步骤109,为Activity配置主题、样式等属性;
步骤110,执行Activity的onStart()和onResume()方法,同样要避免延迟大的操作;
步骤111,应用完成启动,显示界面。
2.根据权利要求1所述的提升Android应用程序启动速度的方法,其特征在于,所述步骤102中,判断启动类型的方法为应用自身扫描系统进程和任务列表,看是否有此应用的进程,如果有,则启动类型为热启动;如果没有,则启动类型为冷启动。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611047968.5A CN106547598A (zh) | 2016-11-22 | 2016-11-22 | 提升Android应用程序启动速度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611047968.5A CN106547598A (zh) | 2016-11-22 | 2016-11-22 | 提升Android应用程序启动速度的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106547598A true CN106547598A (zh) | 2017-03-29 |
Family
ID=58395726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611047968.5A Pending CN106547598A (zh) | 2016-11-22 | 2016-11-22 | 提升Android应用程序启动速度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106547598A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951298A (zh) * | 2017-04-25 | 2017-07-14 | 广州优视网络科技有限公司 | 一种提升应用启动速度的方法和装置 |
CN107741869A (zh) * | 2017-11-20 | 2018-02-27 | 青岛海信移动通信技术股份有限公司 | 应用程序的启动方法、装置、及终端设备 |
CN107861827A (zh) * | 2017-10-31 | 2018-03-30 | 努比亚技术有限公司 | 卡屏检测方法、移动终端及计算机可读存储介质 |
CN108304233A (zh) * | 2018-01-10 | 2018-07-20 | 武汉斗鱼网络科技有限公司 | Application对象迁移方法、存储介质、电子设备及系统 |
CN109117203A (zh) * | 2018-07-13 | 2019-01-01 | 广州小鹏汽车科技有限公司 | 一种Android APP启动速度优化方法及系统 |
CN109918145A (zh) * | 2019-01-10 | 2019-06-21 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动的加速方法、装置、电子设备 |
WO2020078314A1 (zh) * | 2018-10-15 | 2020-04-23 | 华为技术有限公司 | 加速应用的冷启动的方法、装置和终端 |
CN111756927A (zh) * | 2020-06-23 | 2020-10-09 | 广东小天才科技有限公司 | 一种定位信息的输出方法、终端设备及存储介质 |
WO2021027700A1 (zh) * | 2019-08-15 | 2021-02-18 | 华为技术有限公司 | 应用程序启动方法、装置、终端设备及可读存储介质 |
CN114489842A (zh) * | 2022-01-17 | 2022-05-13 | 重庆长安汽车股份有限公司 | 一种基于Android平台加速应用启动方法 |
EP4002108A4 (en) * | 2019-09-19 | 2022-10-12 | Honor Device Co., Ltd. | APPLICATION STARTING METHOD AND ELECTRONIC DEVICE |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707973A (zh) * | 2012-05-04 | 2012-10-03 | 惠州Tcl移动通信有限公司 | 基于Android系统的应用程序启动的方法和系统 |
-
2016
- 2016-11-22 CN CN201611047968.5A patent/CN106547598A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707973A (zh) * | 2012-05-04 | 2012-10-03 | 惠州Tcl移动通信有限公司 | 基于Android系统的应用程序启动的方法和系统 |
Non-Patent Citations (1)
Title |
---|
佚名: "Android性能优化之加快应用启动速度", 《HTTP://BLOG.CSDN.NET/U010687392/ARTICLE/DETAILS/50518343》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951298A (zh) * | 2017-04-25 | 2017-07-14 | 广州优视网络科技有限公司 | 一种提升应用启动速度的方法和装置 |
CN107861827B (zh) * | 2017-10-31 | 2021-05-21 | 努比亚技术有限公司 | 卡屏检测方法、移动终端及计算机可读存储介质 |
CN107861827A (zh) * | 2017-10-31 | 2018-03-30 | 努比亚技术有限公司 | 卡屏检测方法、移动终端及计算机可读存储介质 |
CN107741869A (zh) * | 2017-11-20 | 2018-02-27 | 青岛海信移动通信技术股份有限公司 | 应用程序的启动方法、装置、及终端设备 |
CN108304233A (zh) * | 2018-01-10 | 2018-07-20 | 武汉斗鱼网络科技有限公司 | Application对象迁移方法、存储介质、电子设备及系统 |
CN109117203A (zh) * | 2018-07-13 | 2019-01-01 | 广州小鹏汽车科技有限公司 | 一种Android APP启动速度优化方法及系统 |
WO2020078314A1 (zh) * | 2018-10-15 | 2020-04-23 | 华为技术有限公司 | 加速应用的冷启动的方法、装置和终端 |
US12093726B2 (en) | 2018-10-15 | 2024-09-17 | Huawei Technologies Co., Ltd. | Method, apparatus, and terminal for accelerating cold startup of an application |
CN109918145A (zh) * | 2019-01-10 | 2019-06-21 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动的加速方法、装置、电子设备 |
WO2021027700A1 (zh) * | 2019-08-15 | 2021-02-18 | 华为技术有限公司 | 应用程序启动方法、装置、终端设备及可读存储介质 |
EP4002108A4 (en) * | 2019-09-19 | 2022-10-12 | Honor Device Co., Ltd. | APPLICATION STARTING METHOD AND ELECTRONIC DEVICE |
US11947974B2 (en) | 2019-09-19 | 2024-04-02 | Honor Device Co., Ltd. | Application start method and electronic device |
CN111756927A (zh) * | 2020-06-23 | 2020-10-09 | 广东小天才科技有限公司 | 一种定位信息的输出方法、终端设备及存储介质 |
CN114489842A (zh) * | 2022-01-17 | 2022-05-13 | 重庆长安汽车股份有限公司 | 一种基于Android平台加速应用启动方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106547598A (zh) | 提升Android应用程序启动速度的方法 | |
CN108600311B (zh) | 客户端模拟接口数据的方法及装置 | |
CN108255729B (zh) | 一种基于Unity平台的手机游戏自动化测试方法和系统 | |
CN103123605B (zh) | 一种Android平台自动化集成测试方法和装置 | |
CN106445292B (zh) | 应用程序的分身管理方法及系统 | |
CN109966742B (zh) | 游戏运行中获取渲染性能数据的方法及装置 | |
CN103514007B (zh) | 一种基于Android系统的移动终端的热启动的方法 | |
CN106951298A (zh) | 一种提升应用启动速度的方法和装置 | |
CN110362483A (zh) | 性能数据采集方法、装置、设备及存储介质 | |
CN113722020B (zh) | 接口调用方法、装置和计算机可读存储介质 | |
CN106330599B (zh) | Android应用程序网络流量多线程采集系统及方法 | |
WO2018188380A1 (zh) | 一种添加控件标识的方法和装置 | |
CN110275704A (zh) | 页面数据处理方法和装置,存储介质和电子设备 | |
CN107807831A (zh) | 应用程序中的业务执行方法、装置、终端及存储介质 | |
CN115357515B (zh) | 一种多核系统的调试方法、装置、计算机设备及存储介质 | |
Tuovenen et al. | MAuto: Automatic mobile game testing tool using image-matching based approach | |
CN111078424A (zh) | 一种信息交互方法、装置、计算机设备和存储介质 | |
CN107145367A (zh) | 一种用于前端开发的可视化发布方法及系统 | |
CN110928787B (zh) | 自动化测试脚本录制回放方法、装置、设备和存储介质 | |
CN109656761A (zh) | 基于linux系统的服务器HT自动测试方法及系统 | |
CN117632746A (zh) | 一种插桩处理方法、装置、存储介质及电子设备 | |
CN113760397A (zh) | 接口调用的处理方法、装置、设备及存储介质 | |
CN112068879A (zh) | 基于配置化的客户端应用程序开发框架构建方法及装置 | |
CN114003421B (zh) | 虚拟机超时机制测试方法、系统、终端及存储介质 | |
CN105933160A (zh) | 在Android智能电视上实现有线网络快速连接的方法 |
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 |
Application publication date: 20170329 |
|
RJ01 | Rejection of invention patent application after publication |