性能优化汇总

启动优化

1.主线程直接优化

在这里插入图片描述
在启动优化时我们开发人员可以接入的时间节点

1.MutilDex优化
针对4.x机器上首次启动会对dex进行校验,会造成启动慢的情况

  •  使用BoostMultiDex框架进行优化
    

2.ContentProvider
ContentProvider 即使在没有被调用到,也会在启动阶段被自动实例化并执行相关的生命周期。

  •  使用JetPack 提供的 Startup框架进行优化(聚合成一个来进行优化)
    

3.第三方Provider
在启动阶段还会去调用 getPathStrategy 方法,我们的耗时则是集中在这个 getPathStrategy 方法中。从实现来看, getPathStrategy 方法主要是进行 FileProvider 关联 xml 文件的解析,解析结果将会赋值给 mStrategy 变量。进一步分析我们会发现 mStrategy 会在 FileProvider 的 query、getType、openFile 等接口进行文件路径校验时用到,而我们的 query、getType、openFile 等接口在启动阶段是不会被调用到的,因此 FileProvider attachInfo 方法中的 getPathStrategy 是完全没有必要的。

  • 在代码编译期间使用字节码修改的方向对其逻辑进行修改
    

3.启动任务与任务调度
启动任务优化的核心思想是代码价值最大化和资源利用率最大化。其中代码价值最大化主要是确定哪些任务应该在启动阶段执行,它的核心目标是将不应该在启动阶段执行的任务从启动阶段去除掉;资源利用率最大化则是在启动阶段任务已经确定的情况下,尽可能多的去利用系统资源以达到减少任务执行耗时的目的。对于单个任务而言,我们需要去优化它的内部实现,减少它本身的资源消耗以提供更多资源给其他任务执行,对于多个任务则是通过合理的调度以充分利用系统的资源。

  •   主要手段:任务分类(优先级),使用有向无环图进行任务的依赖拆分,IdleHandler 进行延时加载
    

3.Splash与Main 合并

4.反序列化优化

4.UI渲染优化
一般来说创建 View 有两种方式,第一种方式就是直接通过代码构建 View,第二种方式就是 LayoutInflate 去加载 xml 文件。
LayoutInflate 进行 xml 加载包括三个步骤:

将 xml 文件解析到内存中 XmlResourceParser 的 IO 过程;
根据 XmlResourceParser 的 Tag name 获取 Class 的 Java 反射过程;
创建 View 实例,最终生成 View 树。
这 3 个步骤整体上是比较耗时的。在业务层面上,我们可以通过优化 xml 层级、使用 ViewStub 方式进行按需加载等方式进行优化,这些优化可以在一定程度上优化 xml 的加载时长。

字节启动优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值