-
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、插件化
比如功能模块放在服务器上,按需下载,可以减少安装包大小。
- 最新文章
- 1.象棋软件APP开发功能特色
- 2.共享雨伞APP开发解决方案
- 3.开发一款游戏APP要多少钱?
- 4.手机APP如何开发?手机APP开发的两种最佳途径
- 5.商城系统:购物商城系统开发功能需求分析