乐趣区

关于移动端:移动端性能优化系列启动速度

本文出自于“「2021 友盟 + 挪动利用性能挑战赛」”中的参赛作品,该文章表述了作者如何借助友盟 + U-APM 工具解决了启动问题。

挪动端性能对用户体验、留存有着至关重要的影响,作为开发者是不是被这样吐槽过,“这个 APP 怎么这么大?”、“怎么始终在 APP 封面图转悠,点不进去”、“进入详情成果有些卡”、“用 4G 应用你们的 APP,我的流量有点不够啊”等等,这些问题都直观反映出,一个体验良好的利用,只有性能健全还不够,以下是我在性能优化上总结的几点:

  • 启动速度优化
  • 晦涩度优化
  • 资源优化
  • 内存优化
  • APK 体积优化

明天先聊聊,启动速度的那些事

利用启动流程

冷启动

从点击利用图标到 UI 界面齐全显示且用户可操作的全副过程。

特点:耗时最多,衡量标准

启动流程:Click Event -> IPC -> Process.start -> ActivityThread -> bindApplication -> LifeCycle -> ViewRootImpl

热启动

因为会从已有的利用过程启动,所以不会再创立和初始化 Application,只会从新创立并初始化 Activity。

特点:耗时较少

启动流程:LifeCycle -> ViewRootImpl

因而判断利用启动速度的的规范是冷启动的速度,即杀掉利用后重新启动的速度,此项次要是和你的竞品比照。

不应在 Application 以及 Activity 的生命周期回调中做任何费时操作,具体指标大略是你在 onCreate,onResume,onStart 等回调中所破费的总工夫最好不要超过 400ms,否则用户在桌面点击你的利用图标后,将感觉到显著的卡顿。

冷启动剖析及优化方向

冷启动波及的相干工作

冷启动之前

  1. 首先,会启动 App
  2. 而后,加载空白 Window
  3. 最初,创立过程

须要留神的是,这些都是零碎的行为,个别状况下咱们是无奈间接干涉的。

随后工作

  1. 首先,创立 Application
  2. 启动主线程
  3. 创立 MainActivity
  4. 加载布局
  5. 安排屏幕
  6. 首帧绘制

通常到了界面首帧绘制实现后,咱们就能够认为启动曾经完结了。

上面是官网文档中的启动过程流程图,显示零碎过程和利用过程之间如何交接工作。实际上对启动流程的简要概括。

优化方向

咱们的优化方向就是 Application 和 Activity 的生命周期这个阶段,启动中的零碎工作咱们无奈干涉,能干涉的就是在创立利用和创立 Activity 的过程中可能会呈现的性能问题。这一过程具体就是:

  • Application 的 attachBaseContext
  • Application 的 onCreate
  • activity 的 onCreate
  • activity 的 onStart
  • activity 的 onResume

activity 的 onResume 办法实现后才开始首帧的绘制。所以这些办法中的耗时操作咱们是要竭力防止的。
并且,通常状况下,一个利用的主页的数据是须要进行网络申请的,那么用户启动利用是心愿疾速进入主页以及看到主页数据,这也是咱们计算启动完结工夫的一个根据。

U-APM 在启动优化上的利用

以前应用友盟统计来剖析 App 日活、埋点等数据,发现友盟推出的 U-APM,连忙来尝尝鲜。

U-APM 是友盟 + 推出的 App 稳定性监控、性能监控和云真机测试平台。通过轻量级的集成接入即可领有实时、牢靠、全面的利用解体、ANR、自定义异样等捕捉能力,及卡顿、启动剖析等性能能力,反对多场景、多通道智能告警监控,帮忙开发者高效还原异样、卡顿用户的拜访门路和业务现场,缩短故障排查工夫。就启动剖析这项能力来看看,U-APM 都做了什么。

U-APM 反对启动趋势剖析、慢启动剖析、启动解体剖析。

启动趋势剖析

启动趋势较为直观的展现利用启动耗时的平均值、分位值、区间散布等数据,以及启动阶段的性能合成数据,也能剖析出,多版本迭代后,启动工夫的散布情况。

慢启动剖析

慢启动剖析,有助于开发者追根溯源,该性能展现慢启动状况的占比以及慢启动设施列表,您能够在启动设置中自定义慢启动的划分,默认首次启动 / 冷启动超过 3 秒为慢启动,热启动超过 1 秒为慢启动。

冷启动阶段的慢启动剖析,直观体现出慢启动比例以及慢启动均匀耗时。

慢启动散布,直观体现出,慢启动散布的设施、零碎、运营商、版本、渠道、地区。

启动解体剖析

演绎启动阶段中呈现的解体信息,反对划分首次启动、冷启动、热启动状态下的解体,默认启动耗时下限为 8 秒,超出工夫的解体不被划分至启动解体。

这对缩小利用启动工夫,提供了微小帮忙,官网已提供 Demo

总结

挪动端性能优化环环相扣,启动工夫优化也是较为重要的一个环节,U-APM 的呈现,无疑是开发者的福利,帮忙开发者及早发现问题,解决问题,至于 U-APM 其余性能,能够登录 官方网站 去体验。

退出移动版