Android启动流程优化 中篇

启动优化(中篇)


本文链接:https://blog.csdn.net/feather_wch/article/details/131587046

1、我们可以优化部分

Application构建到主界面onWindowFocusChanged

2、启动方式(官方)

  1. 冷启动
  2. 热启动
  3. 温启动

3、怎么样算是卡顿?

  1. 卡顿:2-5-8原则
  2. 2秒以内:流程
  3. 2-5秒:可以接受
  4. 5-8秒:有些卡顿
  5. 8秒以上:非常卡顿,没办法接受,垃圾应用

4、Android Vitals是什么?

  1. google提出的计划,检测三种启动方式的耗时
  2. 冷5 热1.5 温2

5、如何查看App启动耗时时长?(app点击->可操作的时候onWindowFocuseChanged)

  1. 系统日志统计:ActivityManager:Displayed
  2. adb 命令统计启动时间:adb shell am start -S -W

6、CPU Profile/TraceView(废弃)相关图表

  1. Call Chart
  2. Flame Chart
  3. Top Down Tree
  4. Bottom Up Tree

7、假如版本不支持CPU Profiler怎么办?

  1. Debug.start/stopMethodTracing()
  2. Application创建时调用start(需要手动给予文件权限)
  3. onWindowFocuseChanged调用stop
  4. 文件默认生成在/sdcard/目录下,可以拖到AS中打开

8、StrictMode 严苛模式 setThreadPolicy()/setVmPolicy()

可以在开发阶段严格限制各个耗时操作、IO未关闭等等
出现违规操作根据配置,选择打印日志或者崩溃。

9、黑白屏各个版本差异

  1. windowSplashscreenContent Android8~Andorid11 优先于windowBackground
  2. Android12推出JectPack SplashScreen(基于Android SplashScreen API)同名库兼容到Andorid 6
  3. windowDisablePreview:会关闭黑白屏,但是进入时间更长更慢,体验不好
  4. 自定义简易的SplashScreenActivity+windowDisablePreview:可以做到进入可以打开一个有节日氛围的页面

10、如何减少inflate的时间?

  1. AsyncLayoutInflater帮助异步Inflate减少启动时间

11、AsyncLayoutInflater的局限性:

  1. 构建的View中没有Looper.prepare()需要我们自己去实现(子线程)
  2. 不支持设置LayoutInflater.Factory和LayoutInflater.Factory2
  3. 缓存队列默认大小10,超过了会导致主线程等待

12、EventBus、Arouter启动和初始化很耗时,可以采用接入插件来减少初始化时间,优化启动速度。
13、启动优化项的几个方面

  1. 合理使用异步初始化、延迟初始化、懒加载
  2. 启动过程避免耗时操作,数据库IO不放在主线程
  3. 类加载优化:提前异步执行类加载
  4. 合理使用IdleHandler进行延迟初始化
  5. 简化布局

14、应对面试的处理步骤!!

  1. 告诉对方,启动耗时统计的方案。
  2. 分析工具
  3. 发现了一些第三方库初始化比较耗时,可以放到子线程中处理。有些不可以。
  4. ARouter启动时间很慢,看github发现有新版本的插件可以使用,提升了启动速度

15、启动速度和内存优化也有关系?为什么会有影响?

  1. 和抖动和GC有关

16、字节 multidex 优化启动速度 => 误导读者

  1. 文中分析源码,用多进程去优化multidex速度,多进程本身只是不为了让APP ANR
  2. 修改了谷歌的multidex,谷歌multidex会将dex -> zip 比较耗时。真正优化在于去除了该步骤。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猎羽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值