Android 应用性能优化综述

相信开发过一段时间Android应用的人都会有一些感受,包括开发的应用功能都实现了,但是程序运行起来后,就出现卡.顿.慢。耗电很快这些问题。同时笔者感觉Android开发,功能是很容易搭建起来的,原因主要是Android应用开发主要是调用相应API,还有就是Android源码例子很多,只要明确了功能,只要百度一下,就可以找到相关的demo,当然,特殊功能除外,但是同一个Android 功能,有很多种实现方式,以一个listview 适配为例,目前比较公认的效率较好的是viewhold的方式,但是实现的时候至少有三种方式,但是别的方法都会引起一些性能问题(这里主要是内存泄漏,以及可能会增加垃圾回收的执行可能,说白了就是创建很多view对象),直观的感受就是卡.顿,甚至无响应。解决这些问题的方法有两种,一种是使用一些较广泛使用的框架(listview 相关的控件包括Gridview 这些控件)已有一些开源项目是对基础控件进行封装,并把适配器部分优化了的,使用这些框架可以解决问题,但是这种方式不适合长时间用,仅适合刚开始编程的人用。原因在于,作为一个合格的编程者,有必要把所有东西都清楚。否则万一框架不合适时,就只能束手无策了。找框架是把问题交给了框架开发者,但是谁也不能保证框架开发者的框架就面面俱到。第二种方式就是自己解决性能方面的问题,这是一个笔者推荐的。但是这个方式的难度就与使用框架高了。但是作为一个程序员,本来就该这样的呀。

总结一下,解决性能问题(表现为卡,慢,顿)有两个途径,一个是使用开源框架(不推荐),二是自己优化性能(推荐),本系列博客也将从第二种方式详细介绍。

性能优化就是解决卡,顿,慢。这些问题,要解决这些问题,必须先了解导致这些问题的根本原因。一般情况下会出现卡顿慢的问题主要是在网络请求,文件访问,数据库操作以及listview 滑动。对于网络请求产生的性能问题主要包括网络请求发送时(主要是找不到目标ip,解决办法是在发送请求前设置超时时间,这时间要少于5s,因为Android系统若在5秒内未响应,就会弹出anr错误)和网络请求返回数据读取(主要是信息读取慢,这种情况与文件操作相似,解决方法是使用一些跟具体的类,例如获取信息可以用stream,也可以用stream的子类,这种情况下用子类性能会更好,原因是子类对api进行扩展的同时还使用了一些算法提速(例如使用缓存)。)。至于数据库导致的性能问题,现在一般是有两个思路,一个是优化sql语句,另一个是延迟执行(推迟一会儿,或者当手机空闲时),一般数据库优化,都两种同时用。listview就使用viewhold的方式就可以了。性能优化还有别的方式,类似于可能一些数据量很大,我使用前面的方式优化了,但是效果还是不理想,这种呢就可以考虑提前获取数据。性能优化是一个综合的过程。得根据具体情况制定不同的方案。前面是一些比较典型的出现性能问题的地方,还有一些存在性能问题,但是又不在以上位置的,这样的话,要找到这些地方就得使用一些工具,traceview 就是一款统计某段程序运行时间的工具,traceview可以统计出特定代码在cpu上运行的时间。由于traceview的代码段有程序员设定,一般是按功能分为几块。统计出时间,找到问题所在。一般找到的点同上面一致。可能还会多出一些点。这些多出的点就是接下来要优化的区域,这些点具体情况就看你代码质量了。可能很多,可能很少。可能是某个循环,某个遍历及在某个重载函数中new出对象(常见的事OnDraw())。

要解决这些问题就必须有一些只是储备了。在这里就得开始深入卡顿的具体原因了,google官方曾出过一系列的Android性能优化视频,这视频一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个方面展开,Android的渲染机制,内存与GC,电量优化。其中渲染机制受阻是导致卡,顿的直接原因,内存和gc(垃圾回收)则会影响渲染机制从而导致卡顿。其实无论网络请求,文件访问,还是数据库操作这些都直接影响渲染机制,至于listview 适配这是先影响内存与gc(垃圾回收)再间接影响渲染机制导致卡顿问题,至于电量优化主要是考虑到移动设备电量是一个很缺少的资源,所以电量优化也是一个很重要的模块,虽然电量不会直接影响用户体验,但如果一款应用安装以后,手机的电就特别的不耐用,笔者相信用户一定会卸掉软件的。综上就是Android 渲染机制和内存与GC以及电量优化从性能调优的角度来看都是很重要的。接下来笔者将根据Google 发布的Android 性能优化视频的相关内容分析Android 性能优化要点及原理。

这篇博文的目的在于说明Android程序常见性能问题表现与优化点,及性能优化的重要性

后面会有几篇文章分别从Android 渲染机制,内存与GC 以及电量优化三方面分析Android 性能优化。

 

 

 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值