APP性能优化基础
来源:互联网 发布:网络写作平台17k 编辑:程序博客网 时间:2024/06/06 20:21
APP性能优化总结
之前工作中有了解过关于app性能优化的技术,之前也有遇到过一些比较明显的问题,比如UI界面的过度绘制,列表滑动有明显卡顿,比较耗内存等等,但以往都是有问题就解决它,没有针对性的去做相应的优化。有位同行大哥说过一句话:“功能做到,性能做好”,所以借着保证产品质量的出发点,我在这里总结下自己平常了解到关于性能优化的方法,可能不太成熟,不过可以逐步完善。
这里我大概从以下几个方面分析吧:
数据解析
我们的app一般离不开数据,实际开发中服务器端返回的数据格式无非就两种(服务端返回数据的速度也很重要)
- JSON
- XML
从解析难度和速度来看,大家都比较倾向于JSON,目前也是最主流的数据格式。在Android开发中可以使用优秀的解析库来加快我们的解析速度,XML有Jsoup,JSON有Jackson、Gson,我们可以通过这些库来帮助我们更快的完成数据解析,提高我们客户端的数据显示效率和客户体验效果。
布局优化
- 减少布局层级
- 避免过多无用嵌套
- 使用include标签重用layout
- 使用延迟加载
- 使用Hierarchy View进行层级分析,优化层级
代码优化
- 对常量使用static修饰符
- 使用静态方法,将类、变量、方法等等的可见性修改为最小
- 减少不必要的成员变量
- 尽量减少创建的新的对象
- 使用StringBuffer拼接字符串
- 不要在循环中声明临时变量,不要在循环中捕获异常。用ArrayList,手写计数循环要快3倍
int count = array.size();for (int i = 0; i < count; i++){ System.out.println(i);}
对于线程安全没有要求,尽量使用不安全的集合对象。
- 文件读取操作流时,及时关闭输出输入流。
- 程序频繁创建线程,考虑使用线程池。
- 适当使用软引和弱引用
- 尽量使用静态内部类,避免潜在的内存泄露
- 图片缓存,采用内存缓存LRUCache和硬盘缓存DiskLRUCache
- Bitmap优化,采用适当分辨率大小并及时回收
- 除像音乐播放器等执行后台任务,尽量使用IntentService解决,避免Service内存泄漏
- 避免使用依赖注入框架
- 当界面不可见时释放内存
- 使用Android API优化过的数据集合工具类,如,SparseArray、SparseBooleanArray、以及LongSparseArray等,使用这些API可以让我们的程序更加高效。
//性能较低的集合 HashMap<Integer,String> map = new HashMap<>(); map.put(1,"张三"); map.put(2,"李四"); map.put(3,"王五"); //性能更高的集合 SparseArray<String> array = new SparseArray<>(); map.put(1,"张三"); map.put(2,"李四"); map.put(3,"王五");
- 使用proGuard混淆代码,ProGuard会对我我们的代码进行检索,删除一些无用的代码,并且类、字段、方法等进行重命名,重命名的类、字段、方法都会比原来的简短很多,这样对我们的内存占用也变得更少了。
ListView和DridView优化
- 采用ViewHolder复用convertView
- 避免在getView中执行耗时操作
- 列表在滑动状态时不加载图片
- 开启硬件加速
性能优化相关工具
- 使用Hierarchy Viewer查看UI布局层级
- 使用AndroidStudio Memory Monitor查看内存使用情况
- 使用TraceView优化App性能
- 使用内存泄露分析工具MAT分析APP内存状态
Android中引起内存泄露的原因
- 注册没取消造成内存泄露,如:广播
- 静态变量持有Activity的引用
- 单例模式持有Activity的引用
- 查询数据库后没有关闭游标cursor
- 构造Adapter时,没有使用 convertView 重用
- Bitmap对象不在使用时调用recycle()释放内存
- 对象被生命周期长的对象引用,如activity被静态集合引用导致activity不能释放
- 使用Handler造成的内存泄露
以上就是我对app性能优化的一些总结,有不成熟的地方,欢迎指正。
- APP性能优化基础
- Android App 基础性能优化
- WP7 App性能优化
- WP7 App性能优化
- Android App 性能优化
- Android App 性能优化
- Android App 性能优化
- Android APP 性能优化
- Android App 性能优化
- iOS App性能优化
- iOS App性能优化
- iOS App性能优化
- Android App 性能优化
- iOS App性能优化
- iOS App性能优化
- 优化Android App性能
- iOS App性能优化
- iOS App性能优化
- centos7下使用yum安装mysql
- [XUPort笔记]修改的XUPorter,提供代码编辑
- 如何在交互式python下重复最近输入
- iOS7初体验(3)——图像资源Images Assets
- HTTPS和HTTP的区别
- APP性能优化基础
- Myeclipse快捷键记录
- ubuntu-12搭建tftp服务器
- #NOIP 2014# day.2 T2 寻找道路
- Emmet:HTML/CSS代码快速编写神器
- Oracle数据安装与卸载明细
- javascript读取出字符串中每个字符出现次数
- vSphere 配置开机自启动虚拟机
- [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法