app启动速度优化方案

优化原因:

       启动的时候,长时间白屏,导致产品体验效果大打折扣。

为了解决启动优化,我们首先要了解一下app的启动流程,才能有的放矢,找到优化方向。

有兴趣的可以看一下Google官方文档《Launch-Time Performance》对应用启动优化的概述,下午是我看完后自制的图


从以上流程图分析得出的结论:

1.App进程的创建等环节我们无法控制,但是创建的window可以利用

2. 只能从Application、以及Activity对象的创建回调等过程入手

具体的优化方案:

  1.  利用主题快速显示界面
  2.  异步初始化组件
  3 . 梳理业务逻辑,延迟初始化组件、操作
  4.  正确使用线程【和主线程的资源争夺】
  5.  对MultiDex的分包进行优化【5.0以下】
  6.  切到后台,减少冷启动

  7 . 使用TraceView工具进行分析

-------------------------------------------------------------------------------

 利用主题快速显示界面:

       这个是Google官方推荐的优化方向,以下是官方截取的图片

       [https://developer.android.com/topic/performance/launch-time.html】


异步初始化组件:

     将App所需组件,以及其它需要初始化的内容,通过线程或是线程池,用异步的方案来进行初始化

【有一些组件或是sdk,必须在主线程做初始化】

梳理业务逻辑,延迟初始化组件、操作:

    将需要初始化的业务,统一列表,并进行分析,将不必要在app启动的时候初始化的组件统一做后移处理,在用的时候,初始化 即可,同时,也将减少启动时cpu资源的竞争 [实际上,这一步对项目启动加速最有效果]

    对必须初始化的组件,进行统一的初始化管理,提高初始化速度;

正确使用线程

     app启动的时候,创建线程和线程池,相对来说比较耗时,应在创建时,有1个考量;

     同时,线程越多,跟主线程cpu资源的争抢就越激烈,主线程可以拿到的时间就越少

     工作线程设置优先级:THREAD_PRIORITY_BACKGROUND,这样工作线程最多能获取到10%的时间片,优先保证主线程执行。

对MultiDex的分包进行优化【5.0以下】

   对于5.0以上版本,在安装app时,就做了优化,无需处理。对MultiDex分包做优化,成本太高,而且很可能衍生出新的问题,不建议做优化处理。对于5.0以下版本的优化,有兴趣的可以了解一下【https://www.jianshu.com/p/2891599511ff

切到后台,减少冷启动

       主页面在回退键操作时,做home按键处理,主页面不退出,下次启动,直接从后台切刀前台,如果能针对App做保活,就更好了【不是真正意义上的优化,体验上的有优化,且解决不了冷启动问题】

使用TraceView工具进行分析

    在进行优化时,耗时分析必不可少,借助TraceView工具,分析出关键的耗时点,可优化点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flying_vip_521

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值