Android性能优化(一):APP启动优化

性能优化系列文章:

Android性能优化(一):APP启动优化

Android性能优化(二):UI布局优化
Android性能优化(三):响应优化
Android性能优化(四):内存优化

App启动的方式有三种:

  1. 冷启动:App没有启动过或App进程被killed, 系统中不存在该App进程, 此时启动App即为冷启动。
  2. 热启动:热启动意味着你的App进程只是处于后台, 系统只是将其从后台带到前台, 展示给用户。
  3. 介于冷启动和热启动之间, 一般来说在以下两种情况下发生:
    (1)用户back退出了App, 然后又启动, App进程可能还在运行,但是activity需要重建。
    (2)用户退出App后, 系统可能由于内存原因将App杀死, 进程和activity都需要重启,但是可以在onCreate中将被动杀死锁保存的状态(saved instance state)恢复。

这里主要针对冷启动进行优化。

一、先来看看冷启动的流程:

  1. Zygote进程中fork创建一个新的进程。
  2. 先创建和初始化Application类。
  3. 创建和初始化Launch Activity(onCreate onMesure onLayout,ondraw)。
  4. 调用setContetView方法后,将view添加到DecorView中,调用view的measuer/layotu/draw显示到界面上。

二、冷启动优化:

优化之前先说如何查看应用启动时间,方便进行对比:

  • 第一种方法:手机连接电脑,打开Android Studio,查看Logcat打印出来信息,筛选关键字Displayed就可以看到应用启动时间。如下图:

  • 第二种方法:使用adb shell命令来启动应用并查看启动时间adb shell am start -W [packageName]/[packageName.launchActivity] 如下图:

    优化方法:

  • 针对Application的,不要在Application中进行业务操作和耗时操作,不要以静态变量的方式在Application中保存数据。

  • 针对Launch Activity,不要在Activity的onCreate方法进行耗时操作,如有必要则在线程中操作或者延时加载。

  • 针对Launch Activity的View的绘制,减少Activity布局view的层级,最好不要超过4层,减少View测量绘制的时间。

需要执行耗时任务时,推荐使用下面这种延时加载,在窗口完成以后进行加载,这里面的run方法是在onResume之后运行的。

getWindow().getDecorView().post(new Runnable() {@Overridepublic void run() {//TODO something}
});

Android性能优化(一):APP启动优化相关推荐

  1. App性能优化(布局优化,线程优化,app瘦身优化,页面切换优化,App启动优化,内存优化)

    Android APP性能优化(最新总结) 在目前Android开发中,UI布局可以说是每个App使用频率很高的,随着UI越来越多,布局的重复性.复杂度也随之增长,这样使得UI布局的优化,显得至关重要 ...

  2. 实测 性能优化之——App启动优化

    当你看到爱奇艺,支付宝等大厂APP点击图标秒开的时候,感觉产品体验非常棒,纵享丝滑,回头再看看自己的APP,先白屏晾你一会,顿时是不是感觉心里不爽了:为啥别人的产品那么效果那么好呢(千万不要找借口说人 ...

  3. 【Android 性能优化】应用启动优化 ( 启动优化项目 | 界面启动时间 | 启动优化项目 | 方法追踪 MethodTracing )

    文章目录 一. 界面启动时间 二. 启动优化项目 三. 方法追踪 一. 界面启动时间 在 [Android 性能优化]应用启动优化 ( 启动白屏问题 | 应用启动时间测量 | 冷启动 | 热启动 | ...

  4. Android App启动优化

    一:启动优化 1. 启动状态 应用有三种启动状态,冷启动.温启动与热启动:每种启动状态都会影响该应用向用户显示所需的时间. 在冷启动中,应用从头开始启动. 在另外两种状态中,系统需要将后台运行的应用带 ...

  5. 【Android 性能优化】应用启动优化 ( 阶段总结 | Trace 文件分析及解决方案 | 源码分析梳理 | 设置主题的方案总结 ) ★

    文章目录 一. 常用的耗时方法优化方案 ( 重要 ) 二. 源码分析梳理 1. 应用启动时间计算相关源码分析 2. Launcher 应用中启动 Android 应用流程 三. 启动白屏解决方案 An ...

  6. 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用启用普通安卓应用 | 应用进程分析 )

    文章目录 一. Launcher 应用 startActivitySafely 方法分析 二. Launcher 中的 startActivity(View v, Intent intent, Obj ...

  7. Android 系统性能优化(72)-----App启动优化

    App启动优化的一篇深度好文 原文地址: http://www.jianshu.com/p/c056e63dc7a2 正文 对于Android平台上的线程优先级设置来说可以处理很多并发线程的阻塞问题, ...

  8. 【Android 性能优化】应用启动优化 ( Trace 文件分析 | 结合代码分析 Trace 文件 )

    文章目录 一. Trace 文件查看 二. 结合代码分析 Trace 文件 一. Trace 文件查看 上一篇博客 [Android 性能优化]应用启动优化 ( 方法追踪代码模板 | 示例项目 | S ...

  9. App启动优化-一顿操作猛如虎

    前言 ++一个应用App的启动速度能够影响用户的首次体验,用户希望应用能够及时响应并快速加载.启动时间过长的应用不能满足这个期望,并且可能会令用户失望.这种糟糕的体验可能会导致用户在应用商店针对您的应 ...

最新文章

  1. Spring中使用Schedule调度
  2. prim算法构建最小生成树
  3. 走近云计算:解密IaaS、PaaS和SaaS
  4. 可与教科书相媲美的书——《世界是数字的》
  5. BZOJ2815: [ZJOI2012]灾难
  6. MySQL 8.0 CentOS 7安装手册
  7. 干货 | 仅需10分钟,开启你的机器学习之路!
  8. ljc.framework_Java 9模块系统(拼图)@ LJC的HackTheTower
  9. 洛谷 P2590 BZOJ 1036 [ZJOI2008]树的统计
  10. 【Vue】—解决页面图片加载抖动的问题
  11. M进制转N进制(C++)
  12. [BZOJ2282]消防
  13. centos7 mysql5.7.2_Install mysql5.7 on centos7.2
  14. Qt_QTableWidget 详解 最全用法 网格线样式 最后一列自拉伸
  15. sqlserver200864位下载_sql server 2008 r2中文版
  16. 更改配置本地host地址
  17. w3c 菜鸟mysql_w3c菜鸟
  18. alexa前100万个域名下载
  19. 网银支付接口资料小总
  20. Jzoj4722 跳楼机

热门文章

  1. 软件测试体系学习及构建(1)-软件测试环境介绍
  2. PHP实现小型问卷星,JS实现问卷星自动填问卷脚本并在两秒自动提交功能
  3. Oracle魔改linux,linux shell脚本攻略 第3版 pdfssr 魔改v3一键
  4. unexpected character `w‘ in type specifier 解决方案
  5. 终于有人把“内卷”和“囚徒困境”讲明白了!
  6. 修复Java使用POI合并Excel单元格后,边框不显示的问题
  7. 数分下第11讲(9.5节) 多变量函数的Taylor公式与极值
  8. 《手把手教你读财报》- 读书总结
  9. 微信小程序社区疫情防控+后台管理系统|前后分离VUE
  10. Python之字符编码与文件操作