【Android】Android性能优化
2016-01-31 22:11
330 查看
Android性能优化
何为性能问题?在性能测试中存在两个概念:
响应时间
指从用户操作开始到系统给用户以正确反馈的时间。一般包括系统处理时间 + 网络传输时间 + 展现时间。对于非网络类应用不包括网络传输时间。响应时间是用户对性能最直接的感受。
TPS(Transaction Per Second)
TPS为每秒处理的事务数,是系统吞吐量的指标,在搜索系统中也用QPS(Query Per Second)衡量。TPS一般与响应时间反相关。通常所说的性能问题就是指响应时间过长、系统吞吐量过低。在web性能测试中,也会将高并发下内存泄漏归为性能问题。在Android应用程序中由于系统ANR的限制,所以对主线程的响应时间提出了更高的要求。Android ANR的具体要求是指Activity对事件响应不超过5秒,BroadcastReceiver中执行时间不超过10秒。
性能优化方式
降低执行时间
这部分包括:a. 缓存(包括对象缓存、IO缓存、网络缓存), b. 数据存储类型优化, c. 算法优化, d. JNI, e. 逻辑优化, f. 需求优化
同步改异步,利用多线程提高TPS
提前或延迟操作,错开时间段提高TPS
对于数据库优化、布局优化、Java代码部分优化都可以归纳到上面的几种方式中。
数据库优化
创建索引
使用事务
其他优化
异步线程
一. 索引
简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率。
优点:大大加快了数据库检索的速度,包括对单表查询、连表查询、分组查询、排序查询。经常是一到两个数量级的性能提升,且随着数据数量级增长。
缺点:索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加。在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响。
索引分类
索引的使用场景
a. 当某字段数据更新频率较低,查询频率较高,经常有范围查询(>, <, =, >=, <=)或order by、group by发生时建议使用索引。并且选择度越大,建索引越有优势,这里选择度指一个字段中唯一值的数量/总的数量。
b. 经常同时存取多列,且每列都含有重复值可考虑建立复合索引
索引的使用规则
二. 使用事务
三. 其他优化
四. 异步线程
布局优化
抽象布局标签
去除不必要的标签和View节点
减少没有必要的inflate
其他
布局优调工具
一. 抽象布局标签
二. 去除不必要的嵌套和View节点
三. 减少没有必要的inflate
四. 其他
五. 布局调优工具
代码部分优化
降低执行时间
异步利用多线程提升TPS
提前或延时加载
网络优化
一. 降低执行时间
二. 异步利用多线程提升TPS
三. 提前或延时加载
四. 网络优化
相关文章推荐
- Android RangeSeekBarView 选定范围值的控件
- Android 自定义一个可以展开显示更多的文本布局
- Gradle Android客户端程序打包(基于gradle 2.10版本验证通过)
- Android ActionBar随ScorllView上下拖动而透明度渐变效果
- adb看android程序的cpu和内存消耗
- android开发游记:a-z列表快速查找功能和搜索关键字高亮
- Activity组件的启动过程
- Mac 下用 go 开发Android应用环境设置
- Android Studio GitHub 提交项目代码
- ActionMode,actionModeBackground无效
- Android的logger机制分析
- Android Bitmap的加载和Cache
- 在android 5.0以上,如何判断当前应用是在前台还是后台
- Android 学习
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- android *** Layout 03
- Android开发学习日记1-button触发的三种方法
- Android布局之线性布局——LinearLayout
- Android UncaughtExceptionHandler进行全局异常捕获
- Android 消息处理机制