之前也做过启动优化,无非是把那些耗时的操作放到子线程,或者延迟初始化。

但是对于我们这个项目,合作方要求必须更加优化启动速度。

既然已经提出来了, 不可逃避,那就想尽各种办法去优化吧。

1.Debug.startMethodTrace

用methodtrace 去查找方法的执行时间,凡是执行超过100ms 的,都要优化。
当然从最大的开始优化。很多超过200ms 的,更要想办法去优化。

2.想办法优化,比如开屏广告素材加载很耗时,那么我就用上次的缓存,这次在启动app之后,找个时机去初始化。

3.很多以为必须要放在主线程里面的东西,其实可以放到子线程。

有写时候,可以用锁,让主线程去等待一下子线程,但是会开两个线程去做事情。大概可以优化500ms。比如我们的插件框架。Fragment 的加载依赖于插件框架的加载完成,但是不得不提的是,加载太慢了。这之后,我可以在主工程要用插件的地方,等着子线程去加载完成。有很多方式,比如锁。其实很多人都会认为不可以在子线程初始化,其实是可以的。

4.不一定要开一个线程,可以开两个线程。并且按照重要性设置优先级。

我是开了两个线程,太多也不好。现在都是多核处理器,那么两个线程不会浪费多核。

比如我下面这个代码。

        Thread thread = new Thread("PluginManager.init") {@Overridepublic void run() {super.run();HotfixManager.init(application);PluginManager.init(application);PluginManager.preLoadDexFile();}};thread.setPriority(9);thread.start();

经过以上优化,我的app 又在不能优化的基础上,提高了1-2s 的启动速度。在小米6可以达到1.2s 的启动速度。

总结:

1.既然现在的小优化不能达到你要的水平,那么就大刀阔斧的改吧。因为小改是不会有大产出,而且反正还在开发阶段,那么就什么都不要怕了。

2.不要懒,也不要怕改了代码,跑程序慢。勤奋一点,多几几次。

android 启动速度优化终极方案相关推荐

  1. Android 启动速度优化

    Android 启动速度优化 前序 统计 adb测量 手动打点 方案 预加载 class字节码的预加载 Activity预创建 Glide预初始化 WebView预加载 数据预加载 三方库初始化 布局 ...

  2. 深入探索Android启动速度优化

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. 在性能优化的整个知识体系中,最重要的就是稳定性优化,在上一篇文章 <深入探索Andro ...

  3. Android启动速度优化

    欢迎访问我的个人网站:https://coderyuan.com 最近做了一些Android App启动速度的优化,有一些心得,整理整理 影响启动速度的原因 高耗时任务 数据库初始化.某些第三方框架初 ...

  4. 带你彻底搞懂Android启动速度优化!吐血整理

    说起IT行业,大多数人脑海里反应出的第一个标签一定是"高薪",而说起程序员,大家更多想到的可能是: 秃顶.木讷.格子衫: 加班多.能赚钱.不花钱: 没对象-- 甚至很多人还说&qu ...

  5. Android网络代理终极方案(适用于手机及电视盒子设备)

    adb命令设置全局代理 adb shell settings put global http_proxy ip:port 如: adb shell settings put global http_p ...

  6. 记录一个android性能优化宝藏级总结

    发现一个android性能优化文章宝藏级总结,太赞了,感谢大佬的无私奉献总结,防止丢失,在此记录一下 传送门 复制一些目录,增加一些篇幅{嘻嘻} 优化心得和经验 抖音 Android 性能优化系列:启 ...

  7. 深入探索Android布局优化(上)

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. Android的绘制优化其实可以分为两个部分,即布局(UI)优化和卡顿优化,而布局优化的核心 ...

  8. Android 性能优化必知必会(2020-5-16)

    做了这么久性能相关的工作,也接触了不少模块,说实话要做好性能这一块,真心不容易.为什么这么说? 是因为需要接触的知识实在是太多了, Android 是一个整体,牵一发而动全身,不是说只懂一个模块就可以 ...

  9. 你想要的Android性能优化系列:启动优化 !

    文章目录 一.概述 二.应用启动流程介绍 三.优化核心思想 四.时间检测 4.1 Displayed 4.2 adb shell 4.3 reportFullyDrawn() 4.4 代码打点 4.5 ...

最新文章

  1. 同时更改一条数据_数据库中的引擎、事务、锁、MVCC(二)
  2. 软件质量保证与测试文档怎么写,软件质量保证与测试整理版.pdf
  3. linux下查看监听port相应的进程
  4. TensorFlow——[基本图像分类]fashion-mnist及mnist_reader.py运行错误[TypeError: Invalid dimensions for image data]
  5. 深入浅出的webpack4构建工具--webpack4+react构建环境(二十)
  6. DataView数据视图的使用 winform
  7. 使用gdb进行程序调试1-在GDB中运行程序
  8. php dio获取串口数据,flutter通过dio读取二进制数据,比如通过api接口读取图片
  9. erp系统是什么的简称
  10. 无线覆盖技术的重要性
  11. 基于java图书销售系统
  12. 福昕PDF阅读器文本复制功能设置
  13. 计算机蓝屏重启,电脑蓝屏重启,详细教您电脑经常自动蓝屏重启怎么办
  14. 览器野史 UserAgent列传
  15. mysql ndb存储引擎_NDB存储引擎 | 学步园
  16. 现代化医院PACS/RIS系统概述
  17. trac linux,CentOS下安装Trac笔记
  18. 一些程序设计模式的整理
  19. JWB1: webapp相关简介
  20. python 日期转换

热门文章

  1. 1000在计算机术语是什么意思,计算机里所提及的1k字是什么
  2. arduino项目_quot;Arduino智能车项目quot;实战班开班!
  3. annie安装教程与Access is denied解决方法
  4. appium+python搭建自动化测试框架_TestAPP框架(三)
  5. 前端技术周刊 2018-03-02
  6. 已知/未知宽高的浮动元素水平居中对齐 和 图片水平垂直居中对齐
  7. android的WindowManager.addView弹窗添加
  8. 学 Win32 汇编[12]: PTR、OFFSET、ADDR、THIS
  9. 配置CAS应用客户端
  10. 使用Ultra Librarian转换芯片的Altium Designer封装格式