不知大家是否有同样的烦恼,那就是app启动时间太长,打开速度慢。对于急性子的人来说更是要抓狂了,那么,app启动时间该如何优化呢?首先,我们需要了解APP启动的相关内容,用户希望APP能够快速响应并加载,一个启动速度慢的APP 不符合用户期望,可能会令用户失望,并且可能会导致用户对您的应用程序评价不佳,甚至会卸载你的应用。友盟U-APM的启动分析,就可以帮我们分析app启动时间过长的问题,然后找出原因,从而解决问题。那么接下来,我们先来了解下关于app启动方面的事项!

一、App 启动模式分类

  App 启动模式分以下 三 类 :冷启动,热启动,温热启动。

  1、冷启动

  APP从零开始,APP启动之前,系统没有为此 APP创建独立进程。比如:设备启动后,APP第一次Launch或者APP被Kill掉后的重启。这种类型的启动优化存在很大挑战,因为Android系统或应用还有其他更多的后台进程在运行。

  2、热启动

  APP的热启动要比冷启动简单得多,内存开销也更低。APP热启动时候,所有的系统都是把你的Activity带到前台。如果APP的所有Activity仍驻留在内存中,则APP可以避免重复对象初始化、布局绘制和显示等工作。如果APP 在内存中被清理掉,比如调用ontrimmemory,当响应热启动时,这些对象将重新被创建。

  3、温热启动

  处于冷启动与热启动之间,既包含一些冷启动的操作,又含有部分热启动的功能。例如以下两种状态:①.用户退出APP后重新Launch。此时此APP的进程可能会存在,然而,Activity 必须重新创建并调用onCreate方法。②.APP 被缓存中清理掉时。

 此时,用户重新Launch APP时,此APP的进程和Activity都需要重新创建,但是任务栈中会保存部分APP实例数据(bundle类型)传递个Activity onCreate方法。

  二、应用中冷启动避免白屏、黑屏方案

  1、手机中 APP首次启动(未在最近任务列表中,或已经运行过,但在最近任务列表中已清除启动记录)称为冷启动,此时打开APP时候回闪白屏或黑屏,特别是当系统主题为黑色或白色时候比较明显。

  2、在应用端规避掉打开APP闪白屏、黑屏问题,主要是从android:windowIsTranslucent上让白屏变透明,进而不让用户看到白屏、黑屏现象。

  3、但是,此解决方案会导致在Launcher中点击APP`` icon 是会有轻微的卡顿现象,此现象会让用户误认为手机卡,APP启动慢,从而将打开APP闪白屏的黑锅甩给手机制造厂商。

  三、 App 启动优化简介

  Android L之后的版本,如无特殊处理,APP启动模式为Speed模式,此模式性能较好,但优化之后的文件占用空间比较大。不同模式可以看上面MTK 提供的参考标准。

  对APP的优化是通过dex2oat 去执行的,优化模式的参数是有外界调用dex2oat方法传递的参数控制,如无传递参数,默认参数Speed。

  那么调用dex2oat的路径有哪些呢?

  1、安装APP时优化

  通过 Framework 下的PackageManagerService 将参数传递给 mAppInstallDir,然后mAppInstallDir 调用dex2oat,因此此种方式的优化模式通过PMS控制。此种模式是将APP的路径,优化之后的oat存放路径,传递给dex2oat。

  但是由于内容可能发生改变,我们有可能无法在dex2oat对APP加以识别,所以,这时候,可以在installd或者PMS中加以判断,是否是我们认为安装比较慢的APP,如果是的话,则改变其优化模式。

  2、APP自身优化插件时

  此种模式往往会指定模式为speed模式或者不指定,在优化之后的保存路径中,携带APP的包名。目前有些 app 像Facebook、微信WeChat等 APP,应用本身较大且代码复杂度高,可能会出现安装失败,安装慢等问题。安装失败是由于dex2oat进程编译时间过久打到了timeout。安装慢当然就是dex2oat做的compiler久的原因。

  另外,像微信这种app在启动应用的时候是会优化插件的(而不是在安装的时候优化),这样就会导致应用lunch时间过久,给用户的感觉就是很慢,手机卡顿等等,让手机厂商背负。在更改优化的模式,加快安装时间时,请注意此修改会降低 APP 运行的性能。

注意:APP安装 / lunch时间的长短取决于CPU核心数,8 核CPU 肯定比 4 核 CPU优化要快,除此之外,还取决于EMMC的性能 ,memory等系统因素。另外,上面我给大家讲到的“友盟U-APM”启动分析,就可以帮助我们分析app启动时间过长的原因。只有我们找到原因,才能够解决问题,达到优化的目的!

    U-APM应用性能监控平台,通过轻量级的集成接入即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力, 及卡顿、启动分析、内存分析、网络分析等性能监测能力,支持多场景、多通道智能告警监测,帮助 开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。提供云真机测试能力, 助力开发者从研发测试质量验收到线上问题复现排查,保障应用品质,提升测试效率。在云真机测试 期间自动采集崩溃信息,提供详尽的崩溃报告协助筛查,真正实现监控测试全流程深度打通。