包建强的培训课程(9):Android App性能优化
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
Normal
0
false
10 pt
0
2
false
false
false
EN-US
ZH-CN
X-NONE
$([{£¥·‘“〈《「『【〔〖〝﹙﹛﹝$(.[{£¥
!%),.:;>?]}¢¨°·ˇˉ―‖’”…‰′″›℃∶、。〃〉》」』】〕〗〞︶︺︾﹀﹄﹚﹜﹞!"%'),.:;?]`|}~¢
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
课程名称:Android App性能优化
一、 简介
本课程根据讲师多年来从事App开发的工作经验,以及业界若干App的性能优化经验分享,总结出Android App开发时的若干性能优化经验,基本覆盖了Android App性能优化的方方面面。
本课程在讲解Android App性能优化技术的同时,还涉及了很多Android底层技术,包括:
l 16ms黄金准则
本课程对于千万级用户的App产品和小量的App产品都适用,尤其是目前存在性能问题对Android App。
本课程适用于具有以下特征的学员:
1、1-2年Android开发经验。
2、正在对公司App做性能优化工作。
二、 培训大纲(2天)
第一天
第1讲
抽丝剥茧看性能——Android性能问题概述
l Android渲染原理
l Android性能问题分类
l Android性能优化指标
第2讲
好借好还,再借不难——Android内存泄漏
l 什么是内存泄漏?
l 对象的四种引用类型
l 内存泄漏侦测工具LeakCanary
l 场景1:静态变量引用Activity对象
l 场景2:静态View
l 场景3:内部类和匿名类
l 场景4:Handler
l 场景5:Threads和TimerTask
l 场景6:监听器
l 场景7:静态集合对象引起的泄漏
l 场景8:资源对象未关闭
l 场景9:使用对象池避免频繁创建对象
l 场景10:Back键退出引起的泄漏
第3讲
最不愿看到的弹出框——ANR问题
l ANR发生原因
l 使用StrictMode规避ANR
第4讲
压死骆驼的最后一根稻草——OOM问题
l OOM原理
l 使用MAT检测内存问题
l OOM规避
第5讲
感受如丝般润滑——Android流畅度问题
l 16ms性能
l 过度绘制
l GPU和CPU绘制
l 内存抖动
l GPU呈现模式分析
l 慎用异常
l 卡顿监控工具:BlockCanary
l TraceView和SysTrace
第6讲
编程中的艺术品——Android布局的性能问题
l include
l merge
l ViewStub
l CompoundDrawable
l 使用HierarchyView查看布局层次
l 使用Dump UI Hierarchy for UI Automator查看布局层次
l 使用Lint静态检查布局
第7讲
手机发烫的罪魁祸首——Android耗电问题
l BroadcastReceiver
l 数据传输
l 位置服务
l AlarmManager
l 瞌睡模式
课堂练习:
l 使用工具排查公司App的内存问题
l 使用工具排查公司App的ANR
l 使用工具排查公司App的内存泄漏
第二天
第8讲
越用越卡为哪般——Android图片渲染优化
l 图片渲染优化方案
l Vector
l 双缓存
l ImageServer
第9讲
想说爱你不容易——ListView性能问题
l ViewHolder模式
l 按需加载图片
l 滑动引起的多线程并发问题
l 列表项中图片的圆角和缩放
l 嵌套列表的解决方案
第10讲
高速公路任我行——Android网络访问优化
l 数据缓存
l 重试机制
l 接口合并
l 增量更新
l 低端机模式
l 弱网优化之道
第11讲
数据,还是数据——SQLite调优
l 快速查找:按需获取数据列
l 快速查找:提前获取列索引
l 快速查找:ContentValues的容量调整
l 快速查找:建立索引
l 索引真的好么?
l 编译SQL语句
l 显示使用事务
l 及时关闭Cursor
l 把耗时操作放在异步线程中
第12讲
一触即发——App启动优化最佳实践
l 闪屏的优化方案
l App启动流程
l 统计App启动时间
l 延迟初始化和异步初始化
l IntentService
l Dex手动拆包
第13讲
他山之石,可以攻玉——Android性能优化工具一览
l 随身测GT
l 使用Hugo打印方法执行时间
l 一种轻量级对象池的设计与实现
课堂练习:
l 使用工具检查公司App的ListView性能
l 在公司的App中使用Hugo
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
包建强的培训课程(9):Android App性能优化的更多相关文章
- Android APP 性能优化的一些思考
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- Android app 性能优化的思考--性能卡顿不好的原因在哪?
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- android app性能优化大汇总
这里根据网络上各位大神已经总结的知识内容做一个大汇总,作为记录,方便后续“温故知新”. 性能指标: (1)使用流畅度: 图片处理器每秒刷新的帧数(FPS),可用来指示页面是否平滑的渲染.高的帧率可以 ...
- fir.im Weekly - 如何进行 Android App 性能优化
关于 Android App 的优化,@anly-jun 用 3 个月完成了这一系列文章,从 性能分析工具 到 ANR .Layout .消除卡顿 到 内存优化.内存分析工具大概十五六篇,并对此做一个 ...
- 包建强的培训课程(1):Android App企业级开发
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(6):Android App瘦身优化
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- 包建强的培训课程(16):Android新技术入门和提高
@import url(/css/cuteeditor.css); Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈 ...
- 包建强的培训课程(3):App竞品技术分析
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(14):Android与ReactNative
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
随机推荐
- L2-025 分而治之(并查集)
分而治之,各个击破是兵家常用的策略之一.在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破.为此参谋部提供了若干打击方案.本题就请你编写程序,判断每个方案的可行性 ...
- SQL Server 2000服务器安装剖析
一.情况说明 sql server 2000以前的版本,例如7.0一般不存在多个版本,只有标准版跟桌面版,用户如果不清楚该装什么版本的话,可按安装上的安装先决条件指示安装,一般在WIN2000 服务器 ...
- 《剑指Offer》第20题(Java实现):定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
一.题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 二.思路解析 首先定义一个Integer类型的栈,记为stack,此栈用来完成数据 ...
- springmvc webservlet 异步请求总结
1:每次请求会启动一个新线程 上边在debug状态下, 每次请求一次,生成一个新的 thread 在此已经是245了 出现一个现象在debug模式下, 每次请求生成的线程,自动在红框那个位置停了下来 ...
- github ignore 规范
转自:https://www.cnblogs.com/xuld gitignore 应该包含 5 块内容: 当前项目需要忽略的文件 项目性质需要忽略的文件(比如是 nodejs 项目,有些文件就需要忽 ...
- hashmap源码研究
概述 在官方文档中是这样描述HashMap的: Hash table based implementation of the Map interface. This implementation pr ...
- EasyPR源码剖析(4):车牌定位之Sobel算子定位
一.简介 sobel算子主要是用于获得数字图像的一阶梯度,常见的应用是边缘检测. Ⅰ.水平变化: 将 I 与一个奇数大小的内核进行卷积.比如,当内核大小为3时, 的计算结果为: Ⅱ.垂直变化: 将: ...
- Javaweb过滤器
http://blog.csdn.net/reggergdsg/article/details/52821502
- arr.sort()
var ary = [12,2,0,15,32,125,52,63,45,24]; /* * sort实现原理 每一次拿出数组中的当前项和后一项,每一次这样的操作都会让传递的匿名函数执行一次,不仅执行 ...
- Eclipse Maven: Cannot change version of project facet Dynamic web to 3.0 的解决方法
在 Eclipse 中创建 Maven web 项目的时候使用 maven-artchetype-webapp 骨架,但是这个 catalog 比较老,用的 servlet 还是 2.3 在 Proj ...