主页 > 洞察 > 开发资讯 > APP开发
  • Android APP开发性能如何优化?

    adinnet / 2017-12-18 16:29 /APP开发

    说到Android系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,所以今天想说的重点是Android APP性能优化,可以从以下四大方面来优化。

    一、卡顿优化

    Android 应用启动慢,使用时经常卡顿,是非常影响用户体验的,应该尽量避免出现。卡顿的根本性原因可以分为两大类:

    1、界面绘制

    主要原因是绘制的层级深、页面复杂、刷新不合理,由于这些原因导致卡顿的场景更多出现在UI和启动后的初始界面以及跳转到页面的绘制上。

    2、数据处理

    导致这种卡顿场景的原因是数据处理量太大,一般分为三种情况,一是数据在处理UI线程,二是数据处理占用CPU高,导致主线程拿不到时间片,三是内存增加导致GC频繁,从而引起卡顿。

    优化建议:

    1、布局优化

    主要通过减少层级、减少测量和绘制时间、提高复用性三个方面入手。

    2、避免过度绘制

    移除XML中非必须的背景,移除Window默认的背景、按需显示占位背景图片。自定义View优化。使用 canvas.clipRect()来帮助系统识别那些可见的区域,只有在这个区域内才会被绘制。

    3、启动优化

    通过对启动速度的监控,发现影响启动速度的问题所在,优化启动逻辑,提高应用的启动速度。启动主要完成三件事:UI布局、绘制和数据准备。因此启动速度优化就是需要优化这三个过程。

    4、合理的刷新机制

    合理的刷新需要注意尽量减少刷新次数、尽量避免后台有高的CPU线程运行以及缩小刷新区域。

    二、内存优化

    在Android系统中有个垃圾内存回收机制,在虚拟机层自动分配和释放内存,因此不需要在代码中分配和释放某一块内存,从应用层面上不容易出现内存泄漏和内存溢出等问题,但是需要内存管理。Android系统在内存管理上有一个Generational Heap Memory模型,内存回收的大部分压力不需要应用层关心,Generational Heap Memory有自己一套管理机制,当内存达到一个阈值时,系统会根据不同的规则自动释放系统认为可以释放的内存,也正是因为Android程序把内存控制的权力交给了Generational Heap Memory,一旦出现内存泄漏和溢出方面的问题,排查错误将会成为一项异常艰难的工作。

    优化建议:

    1、对象引用

    强引用、软引用、弱引用、虚引用四种引用类型,根据业务需求合理使用不同,选择不同的引用类型。

    2、减少不必要的内存开销

    注意自动装箱,增加内存复用,比如有效利用系统自带的资源、视图复用、对象池、Bitmap对象的复用。

    3、使用更优的数据类型

    比如针对数据类容器结构,可以使用ArrayMap数据结构,避免使用枚举类型,使用缓存Lrucache等等。

    4、图片内存优化

    可以设置位图规格,根据采样因子做压缩,用一些图片缓存方式对图片进行管理等等。

    三、稳定性优化

    Android应用的稳定性定义很宽泛,影响稳定性的原因很多,比如内存使用不合理、代码异常场景考虑不周全、代码逻辑不合理等,都会对应用的稳定性造成影响。其中更常见的两个场景是:Crash和ANR,这两个错误将会使得程序无法使用,比较常用的解决方式如下:

    1、提高代码质量

    比如开发期间的代码审核,看些代码设计逻辑,业务合理性等。

    2、代码静态扫描工具

    常见工具有Android Lint、Findbugs、Checkstyle、PMD等等。

    3、Crash监控

    把一些崩溃的信息,异常信息及时地记录下来,以便后续分析解决。

    4、Crash上传机制

    在Crash后,尽量先保存日志到本地,然后等下一次网络正常时再上传日志信息。

    四、耗电优化

    在移动设备中,电池的重要性不言而喻,没有电什么都干不成。对于操作系统和设备开发商来说,耗电优化一致没有停止,去追求更长的待机时间,而对于一款应用来说,并不是可以忽略电量使用问题,特别是那些被归为“电池杀手”的应用,更终的结果是被卸载。因此,应用开发者在实现需求的同时,需要尽量减少电量的消耗。

    五、安装包优化

    应用安装包大小对应用使用没有影响,但应用的安装包越大,用户下载的门槛越高,特别是在移动网络情况下,用户在下载应用时,对安装包大小的要求更高,因此,减小安装包大小可以让更多用户愿意下载和体验产品。

    优化建议:

    1、代码混淆

    使用ProGuard代码混淆器工具,它包括压缩、优化、混淆等功能。

    2、资源优化

    比如使用Android Lint删除冗余资源,资源文件更少化等。

    3、图片优化

    比如利用AAPT工具对PNG格式的图片做压缩处理,降低图片色彩位数等。

    4、避免重复功能的库,使用WebP图片格式等。

    5、插件化

    比如功能模块放在服务器上,按需下载,可以减少安装包大小。

上一篇:APP设计改版如何打造设计记忆点? 下一篇:企业和外包公司签订APP开发合同应该注意哪些?