Android性能优化(一):APP启动优化
Android性能优化(一):APP启动优化
性能优化系列文章:
Android性能优化(一):APP启动优化
Android性能优化(二):UI布局优化
Android性能优化(三):响应优化
Android性能优化(四):内存优化
App启动的方式有三种:
- 冷启动:App没有启动过或App进程被killed, 系统中不存在该App进程, 此时启动App即为冷启动。
- 热启动:热启动意味着你的App进程只是处于后台, 系统只是将其从后台带到前台, 展示给用户。
- 介于冷启动和热启动之间, 一般来说在以下两种情况下发生:
(1)用户back退出了App, 然后又启动, App进程可能还在运行,但是activity需要重建。
(2)用户退出App后, 系统可能由于内存原因将App杀死, 进程和activity都需要重启,但是可以在onCreate中将被动杀死锁保存的状态(saved instance state)恢复。
这里主要针对冷启动进行优化。
一、先来看看冷启动的流程:
- Zygote进程中fork创建一个新的进程。
- 先创建和初始化Application类。
- 创建和初始化Launch Activity(onCreate onMesure onLayout,ondraw)。
- 调用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启动优化相关推荐
- App性能优化(布局优化,线程优化,app瘦身优化,页面切换优化,App启动优化,内存优化)
Android APP性能优化(最新总结) 在目前Android开发中,UI布局可以说是每个App使用频率很高的,随着UI越来越多,布局的重复性.复杂度也随之增长,这样使得UI布局的优化,显得至关重要 ...
- 实测 性能优化之——App启动优化
当你看到爱奇艺,支付宝等大厂APP点击图标秒开的时候,感觉产品体验非常棒,纵享丝滑,回头再看看自己的APP,先白屏晾你一会,顿时是不是感觉心里不爽了:为啥别人的产品那么效果那么好呢(千万不要找借口说人 ...
- 【Android 性能优化】应用启动优化 ( 启动优化项目 | 界面启动时间 | 启动优化项目 | 方法追踪 MethodTracing )
文章目录 一. 界面启动时间 二. 启动优化项目 三. 方法追踪 一. 界面启动时间 在 [Android 性能优化]应用启动优化 ( 启动白屏问题 | 应用启动时间测量 | 冷启动 | 热启动 | ...
- Android App启动优化
一:启动优化 1. 启动状态 应用有三种启动状态,冷启动.温启动与热启动:每种启动状态都会影响该应用向用户显示所需的时间. 在冷启动中,应用从头开始启动. 在另外两种状态中,系统需要将后台运行的应用带 ...
- 【Android 性能优化】应用启动优化 ( 阶段总结 | Trace 文件分析及解决方案 | 源码分析梳理 | 设置主题的方案总结 ) ★
文章目录 一. 常用的耗时方法优化方案 ( 重要 ) 二. 源码分析梳理 1. 应用启动时间计算相关源码分析 2. Launcher 应用中启动 Android 应用流程 三. 启动白屏解决方案 An ...
- 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用启用普通安卓应用 | 应用进程分析 )
文章目录 一. Launcher 应用 startActivitySafely 方法分析 二. Launcher 中的 startActivity(View v, Intent intent, Obj ...
- Android 系统性能优化(72)-----App启动优化
App启动优化的一篇深度好文 原文地址: http://www.jianshu.com/p/c056e63dc7a2 正文 对于Android平台上的线程优先级设置来说可以处理很多并发线程的阻塞问题, ...
- 【Android 性能优化】应用启动优化 ( Trace 文件分析 | 结合代码分析 Trace 文件 )
文章目录 一. Trace 文件查看 二. 结合代码分析 Trace 文件 一. Trace 文件查看 上一篇博客 [Android 性能优化]应用启动优化 ( 方法追踪代码模板 | 示例项目 | S ...
- App启动优化-一顿操作猛如虎
前言 ++一个应用App的启动速度能够影响用户的首次体验,用户希望应用能够及时响应并快速加载.启动时间过长的应用不能满足这个期望,并且可能会令用户失望.这种糟糕的体验可能会导致用户在应用商店针对您的应 ...
最新文章
- Spring中使用Schedule调度
- prim算法构建最小生成树
- 走近云计算:解密IaaS、PaaS和SaaS
- 可与教科书相媲美的书——《世界是数字的》
- BZOJ2815: [ZJOI2012]灾难
- MySQL 8.0 CentOS 7安装手册
- 干货 | 仅需10分钟,开启你的机器学习之路!
- ljc.framework_Java 9模块系统(拼图)@ LJC的HackTheTower
- 洛谷 P2590 BZOJ 1036 [ZJOI2008]树的统计
- 【Vue】—解决页面图片加载抖动的问题
- M进制转N进制(C++)
- [BZOJ2282]消防
- centos7 mysql5.7.2_Install mysql5.7 on centos7.2
- Qt_QTableWidget 详解 最全用法 网格线样式 最后一列自拉伸
- sqlserver200864位下载_sql server 2008 r2中文版
- 更改配置本地host地址
- w3c 菜鸟mysql_w3c菜鸟
- alexa前100万个域名下载
- 网银支付接口资料小总
- Jzoj4722 跳楼机
热门文章
- 软件测试体系学习及构建(1)-软件测试环境介绍
- PHP实现小型问卷星,JS实现问卷星自动填问卷脚本并在两秒自动提交功能
- Oracle魔改linux,linux shell脚本攻略 第3版 pdfssr 魔改v3一键
- unexpected character `w‘ in type specifier 解决方案
- 终于有人把“内卷”和“囚徒困境”讲明白了!
- 修复Java使用POI合并Excel单元格后,边框不显示的问题
- 数分下第11讲(9.5节) 多变量函数的Taylor公式与极值
- 《手把手教你读财报》- 读书总结
- 微信小程序社区疫情防控+后台管理系统|前后分离VUE
- Python之字符编码与文件操作