启动优化

启动优化启动分析在真正动手开始优化之前,我们应该先搞清楚从用户点击图标开始,…启动过程分析用户从桌面点击图标开始,会经历四个阶段T1预览窗口显示。系统在拉起微信进程之前,会先根据应用的Theme属性创建预览窗口,当然如果我们禁用预览窗口或者将预览窗口指定为透明,用户在这段时间依然看到的是桌面

大家好,欢迎来到IT知识分享网。

  启动分析

  在真正动手开始优化之前,我们应该先搞清楚从用户点击图标开始,…

  启动过程分析

  启动优化

  

  用户从桌面点击图标开始,会经历四个阶段

  

  T1 预览窗口显示。系统在拉起微信进程之前,会先根据应用的Theme属性创建预览窗口,当然如果我们禁用预览窗口或者将预览窗口指定为透明,用户在这段时间依然看到的是桌面

  T2闪屏显示。在应用进程和闪屏窗口页面创建完毕,并且完成一系列inflate view onmeasure,onlayout等准备工作之后,用户可以看到flash

  T3主页显示。在完成主窗口创建和页面显示的准备之后,用户可以看到主界面

  T4界面可操作。在启动完成之后,应用会有比较多的工作需要继续执行,应用界面的预加载等等,在这些都完成之后才可以操作

  2.启动问题分析

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

  1.点击图标很久都不响应

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

  2.首页显示太慢

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

  3,首页显示后无法操作

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

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

  启动优化

  我们希望启动期间加载的每个功能和业务都是必须的

  1优化工具

  综合来看 systrace+函数插桩 是比较理想的方案,而且还可以看到系统的一些关键事件,例如:GC、System Sever/CPU调度等

  通过插桩我们可以看到应用主线程和其他线程的函数调用流程,它的实现原理非常简单

  2.优化方式

  当拿到整个启动流程的全景图后,我们可以清楚的看到这段时间内系统、应用各个进程和线程的运行情况

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

  闪屏优化

  今日头条把预览窗口实现成闪屏的效果,这样用户只需要很短的时间就可以看到“预览闪屏”这种完全“跟手”的感觉在高端机上体验非常的好,但对于中低端机,会把闪屏时间变得更长

  合并闪屏和主页面的Activity,减少一个Activity会给线上带来100毫秒左右的优化,但是如果这样做的话,管理时会非常复杂,特别是有很多PWA扫一扫这样的第三方启动流程的时候

  业务梳理

   通过梳理之后,剩下的都是启动过程一定要用的模块,这个时候,我们前期要“抓大放小” 通过算法进行优化,需注意过多的线程预加载会让我们的逻辑变得更加复杂

  页面优化到后面,会发现一些架构和历史包袱会拖累我们前进的步伐,比较常见的是一些事件会被各个模块监听,大量的回调导致很多工作集中执行,部分的框架初始化“太厚”

  线程优化

  线程的优化主要在于减少CPU调度带来的波动,让应用的启动时间更加稳定

  从具体的做法来看,线程的优化一方面试控制线程数量,线程数量太多会相互竞争cpu资源,因此要有统一的线程池,并且根据机器性能拉控制数量

  

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32612.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信