Android编程开发之性能优化技巧

开发 后端
本篇文章我们重点谈论性能优化的5个方面:App启动速度优化、UI流畅度优化、内存优化、apk瘦身、电量优化。

一般情况下,我们谈性能优化基本上会从以下几个方面:

  1. App启动速度优化
  2. UI流畅度优化
  3. 内存优化
  4. apk瘦身
  5. 电量优化

还有些网络速度优化、以及特定类型app的一些针对性的优化,比如播放器起播速度等...。

本篇文章我们重点谈论上面5个方面。

Android编程开发

性能优化正常的流程是,发现自己某方面与竞品差距比较大,比如UI渲染速度,需要通过某种方式去发现为什么比别人慢,往往需要利用一些工具,然后可以做一些针对性的调优(代码优化、实现方式改变等),当然了在调优的过程中会有一些通用性的调优方式可以帮助你。

所以本文从共性的角度来看,主要介绍的就是针对以上5个方面的检测工具以及调优方式了。

1. App启动速度优化

对于App启动速度优化,一般情况下我们会利用主题去防止出现白屏;针对启动速度慢,需要尽可能减少Application的onCreate中所要做的事情,比如一些不重要的SDK延迟或者异步加载;多进程情况下一定要可以在onCreate中去区分进程做一些初始化工作;部分将要使用到的类异步加载;还有针对multidex专门做优化的(当然这个随着5.0以上的设备越来越多,影响倒是没有那么大了)。

当然了,在检测启动优化上,除了利用adb命令去检测总时间,还有就是去发现耗时的方法,可以利用TraceView,或者打开StrictMode,如果你喜欢使用Log,还可以去使用hugo,或者自己写一个类似的AOP日志框架。

StrictMode比较简单,就不描述了,hugo是Jake大神的一个开源库,主要是利用aspectJ,源码很少,也比较简单,不过使用起来还不错,直接看readme就够了。

2. UI流畅度优化

谈到UI流畅度,一般就是不要在主进程去做耗时的操作,提升UI的绘制速度(减少View的布局层级,避免过渡绘制等)...TraceView、Lint、Hugo、StrictMode等...

当然了对于UI卡顿,不可避免的要引入检测的方案:一般有监听Looper的日志。

3. 内存优化

内存优化那么主要就是去消除应用中的内存泄露、避免内存抖动;常用工具就是AS自带的内存检测,可以很好的发现内存抖动;leakcanary可以非常方便的帮助我们发现内存泄露;MAT可以做更多的内存分析。

4. apk瘦身

关于Apk瘦身,主要由以下几个方式:

  • 利用ProGuard压缩代码去除无用资源
  • andresguard进一步压缩与混淆资源
  • 第三方开源库的瘦身,仅保留自己需要的部分
  • ***的图片压缩与webp的使用
  • 合理配置去除不必要的配置,仅保留中文配置等...
  • so的优化与配置,只保留一类so
  • 动态下发一些资源:字库、so、换肤包等;

以上仅有7比较麻烦,需要服务端的配合,此外对于动态下发So,可以参考tinker对So热修复部分代码。

5. 电量优化

电量优化说实在的关注度较低,一般情况就是合理的使用一些传感器、谨慎的使用Wake Lock、减少后台的不要的操作等...检测可以利用battery-historian

好了,大家可以将每个方案的所采用的实际的优化策略记录下来,对每种方式提到的工具一定要自己去体验,用起来肯定不会有多么的困难,实操起来印象会更加深刻。

性能优化并不困难,重要的还是要去实际的去操作一把,基本上也是面试常见的问题了。

***,好文非常多,本文希望仅起到抛砖引入的效果,感谢所有作者~

想起来了16年MDCC上明云凶做过一个性能优化的分享,所以每次谈到性能优化我都能想到当年演讲的ppt。

对了,腾讯有个非常强大的手机上的“集成调测环境”,就是手机上的软件,可以用于性能检测,叫GT。

责任编辑:赵宁宁 来源: 红黑联盟
相关推荐

2013-02-20 14:32:37

Android开发性能

2018-11-20 10:50:00

Java性能优化编程技巧

2011-07-11 15:26:49

性能优化算法

2011-06-14 14:32:46

性能优化

2011-06-14 13:48:07

性能优化工具

2011-06-14 14:17:23

性能优化系统层次

2011-06-14 11:14:10

性能优化代码

2021-07-29 14:20:34

网络优化移动互联网数据存储

2019-12-13 10:25:08

Android性能优化启动优化

2011-03-11 15:53:02

LAMP优化

2015-09-16 14:47:14

Android性能优化代码

2011-09-29 09:50:44

JavaScript

2019-03-21 14:18:38

iOS开发优化原因

2015-09-16 15:48:55

Android性能优化电量

2015-09-16 14:37:50

Android性能优化运算

2015-09-16 13:54:30

Android性能优化渲染

2013-09-17 10:32:08

Android性能优化数据库

2011-03-11 15:52:57

LAMP优化

2009-06-16 16:39:49

Hibernate性能

2014-10-28 16:11:37

AndroidApp性能优化
点赞
收藏

51CTO技术栈公众号