当前位置: 云顶集团4008娱乐 > 互联网资讯 > 正文

云顶集团“压箱底”的启航优化“秘籍”

时间:2019-12-02 23:08来源:互联网资讯
大家好,我是极客时间《 Android开发高手课》作者、前微信高级工程师张绍文。今儿和大家分享下 Android应用启动优化的“秘籍”,在优化过程中你会遇到什么问题?该如何分析?又该如

大家好,我是极客时间《 Android 开发高手课》作者、前微信高级工程师张绍文。今儿和大家分享下 Android 应用启动优化的“秘籍”,在优化过程中你会遇到什么问题?该如何分析?又该如何解决?

用户如果想打开一个应用,就一定要经过“启动”这个步骤。启动时间的长短,不只是用户体验的问题,对于淘宝、京东这些应用来说,会直接影响留存和转化等核心数据。对研发人员来说,启动速度是我们的“门面”,它清清楚楚可以被所有人看到,我们都希望自己应用的启动速度可以秒杀所有竞争对手。

在过去几个月,我一直在填“启动优化”这个坑,也对应用的性能优化有了更深的体会。

云顶集团 1

启动优化的过程,就像是一个知识爬坡的过程。我们不停地尝试往底层深入,希望去摘更高的果实。同样专栏也是希望帮你补充“爬坡”所需的知识,让你一步步进阶成为高手,并可以用高手的思维去寻找、解决开发中遇到的复杂问题。

还是回到启动优化,既然里面涉及那么多问题,我们该如何具体优化呢?

我去年在极客时间推出的《 Android 开发高手课》专栏里,特意用两篇文章来讲清楚启动优化的解决方案,让你的应用启动做到了极致,保证启动优化成果是长期有效。同时我也希望通过这个专栏的学习,你可以从高质量应用、实现高效开发和架构演进这三个部分,来精进自我。专栏的彩蛋也非常的多,比如我精心设计的练习 Sample,认真学习做笔记的同学还有机会获得价值 ¥4800 的“全球大前端技术大会”门票。

小编提示:《 Android 开发高手课》现在正在限时拼团中,拼团价 ¥79,原价 ¥99,已经有近 1W 开发加入学习,想认真学习 Android 开发的同学,请抓紧上车(方式:扫下方的二维码)

启动过程分析

在真正动手开始优化之前,我们应该先搞清楚从用户点击图标开始,整个启动过程经过哪几个关键阶段,又会给用户带来哪些体验问题。

云顶集团 2

我以微信为例,用户从桌面点击图标开始,会经过 4 个关键阶段。

启动问题分析

从启动流程的 4 个关键阶段,我们可以推测出用户启动过程会遇到的 3 个问题。这 3 个问题其实也是大多数应用在启动时可能会遇到的。

如果我们禁用了预览窗口或者指定了透明的皮肤,那用户点击了图标之后,需要 T2 时间才能真正看到应用闪屏。对于用户体验来说,点击了图标,过了几秒还是停留在桌面,看起来就像没有点击成功,这在中低端机中更加明显。

现在应用启动流程越来越复杂,闪屏广告、热修复框架、插件化框架、大前端框架,所有准备工作都需要集中在启动阶段完成。上面说的 T3 首页显示时间对于中低端机来说简直就是噩梦,经常会达到十几秒的时间。

既然首页显示那么慢,那我能不能把尽量多的工作都通过异步化延后执行呢?很多应用的确就是这么做的,但这会造成两种后果:要么首页会出现白屏,要么首页出来后用户根本无法操作。

很多应用把启动结束时间的统计放到首页刚出现的时候,这对用户是不负责任的。看到一个首页,但是停住十几秒都不能滑动,这对用户来说完全没有意义。启动优化不能过于 KPI 化,要从用户的真实体验出发,要着眼从点击图标到用户可操作的整个过程。

《 Android 开发高手课》现在正在限时拼团中,拼团价 ¥79,原价 ¥99,已经有近 1W 开发加入学习,想认真学习 Android 开发的同学,请抓紧上车(方式:扫下方的二维码)

启动优化

启动速度优化的方法和卡顿优化基本相同,不过因为启动实在是太重要了,我们会更加“精打细算”。我们希望启动期间加载的每个功能和业务都是必须的,它们的实现都是经过“千锤百炼”的,特别是在中低端机上面的表现。

“工欲善其事必先利其器”,我们需要先找到一款适合做启动优化分析的工具。

你可以先回忆一下“卡顿优化”提到的几种工具。Traceview 性能损耗太大,得出的结果并不真实;Nanoscope 非常真实,不过暂时只支持 Nexus 6P 和 x86 模拟器,无法针对中低端机做测试;Simpleperf 的火焰图并不适合做启动流程分析;systrace 可以很方便地追踪关键系统调用的耗时情况,但是不支持应用程序代码的耗时分析。

综合来看,在卡顿优化中提到“systrace + 函数插桩”似乎是比较理想的方案,而且它还可以看到系统的一些关键事件,例如 GC、System Server、CPU 调度等。

在拿到整个启动流程的全景图之后,我们可以清楚地看到这段时间内系统、应用各个进程和线程的运行情况,现在我们要开始真正开始“干活”了。

具体的优化方式,我把它们分为闪屏优化、业务梳理、业务优化、线程优化、GC 优化和系统调用优化。

启动优化的进阶方法

当然高手可不是这么容易当的,仅仅完成这些就美滋滋地向老大汇报工作成果:“启动速度提升 30%,秒杀所有竞品好几条街”,启动优化工作就结束了吗?“还有什么方法可以做进一步优化吗?怎么证明你秒杀所有的竞品?如何在线上衡量启动优化的效果?怎么保障和监控启动速度是否变慢?”

除了上面这些常规的优化方法,我还有一些与业务无关的“压箱底”方法可以帮助加快应用的启动速度。当然有些方法会用到一些黑科技,它就像一把双刃剑,需要你做深入的评估和测试。

未来移动开发无论是变成大前端还是 Flutter 的世界,性能、效率和架构都是永恒不变的主线。今天我们在 Android 开发打下的坚实基础,未来也会帮助我们更好地理解和深入新的开发模式或者新的系统。崩溃、内存、存储、渲染、I/O、网络...... 这些知识以及它们背后的底层原理依然还是非常重要的。

云顶集团 3

关于性能优化,推荐你看看我专栏里的这些内容:

第 19 讲 | 耗电优化:耗电的优化方法与线上监控

《 Android 开发高手课》现在正在限时拼团中,拼团价 ¥79,原价 ¥99,已经有近 1W 开发加入学习,想认真学习 Android 开发的同学,请抓紧上车(方式:扫下方的二维码)

专栏读者评价

云顶集团 4

编辑:互联网资讯 本文来源:云顶集团“压箱底”的启航优化“秘籍”

关键词:

  • 上一篇:没有了
  • 下一篇:没有了