APP开发中我们需要去优化哪些方面?
2020-08-19 本文已影响0人
GXT_Star
最近项目上线,需要做优化,之前也没怎么接触过优化那块,所以把自己的一些总结在复盘下,给大家分享下做优化的方面共同探讨。
一般我们用Android系统手机,大多数人的印象可能是用了一段时间就会变得有些卡顿,有些程序在运行期间莫明其妙的出现崩溃,开启系统文件夹一看,发现多了许多文件,所以今天分享的关键是AndroidAPP应用性能优化,能够从以下四大方面来优化。
image.png
一、卡顿优化
Android 软件启动慢,采取时经常卡顿,是非常影响用户体验的,应该尽可能以免出现。卡顿的根本性原因能够分成两大类:
1、界面绘制
- 重要原因是绘制的层次深、页面复杂、刷新不合理,由于这些原因引致卡顿的场景更多出目前UI和启动后的初始界面以及跳转到页面的绘制上。
2、数据处理
- 引致这种卡顿场景的原因是数据处理量太大,普遍分成三种情形,一是数据在处理UI线程,二是数据处理占用CPU高,引致主线程拿不届时间片,三是内存增多引致GC反复,进而引起卡顿。
优化建议:
1、布局优化
- 重要通过降低层次、降低测量和绘制时间、提高复用性3个方面入手。
2、以免过度绘制
- 移除XML中非必须的背景,移除Window默认的背景、按需显示占位背景图片。自定义View优化。采取 canvas.clipRect()来协助系统辨识那些可见的区域,只有在这个区域内才会被绘制。
3、启动优化
- 通过对启动速度的监控,发现影响启动速度的问题所在,优化启动逻辑,提高软件的启动速度。启动重要完结三件事:UI布局、绘制和数据准备。因而启动速度优化就是需求优化这3个历程。
4、合理的刷新机制
- 合理的刷新需求留意尽可能降低刷新次数、尽可能以免后台有高的CPU线程运行以及缩小刷新区域。
二、内存优化
- 在Android系统中有个垃圾内存回收机制,在虚拟机层自动分配和释放内存,因而不需求在代码中分配和释放某一块内存,从软件维度上不容易出现内存泄漏和内存溢出等问题,可是需求内存管理。Android系统在内存管理上有1个Generational Heap Memory模型,内存回收的大多数压力不需求软件层关心,Generational Heap Memory有自己一套管理机制,当内存满足1个阈值时,系统会依据不一样的规则自动释放系统认为能够释放的内存,也正是由于Android程序把内存控制的权力交给了Generational Heap Memory,一旦出现内存泄漏和溢出方面的问题,排查错误将会变成一项异常困难的工作。
优化建议:
1、对象引用
- 强引用、软引用、弱引用、虚引用四种引用种类,依据业务需要合理采取不一样,选择不一样的引用种类。
2、降低多余的内存花销
- 留意自动装箱,增多内存复用,例如高效运用系统自带的资源、视图复用、对象池、Bitmap对象的复用。
3、采取更优的数据种类
- 例如针对数据类容器结构,能够采取ArrayMap数据结构,以免采取枚举种类,采取缓存Lrucache等等。
4、图片内存优化
- 能够设立位图规格,依据取样因子做缩减,用一些图片缓存方法对图片进行管理等等。
三、稳定性优化
- Android软件的稳定性定义很宽泛,影响稳定性的原因许多,例如内存采取不合理、代码异常场景思考不周到、代码逻辑不合理等,都会对软件的稳定性导致影响。其中更常见的2个场景是:Crash和ANR,这2个错误将会使得程序没法采取,比较常用的解决方法如下:
1、提高代码质量
- 例如开发期间的代码考核,看些代码设计逻辑,业务合理性等。
2、代码静态扫描工具
- 常见工具备Android Lint、Findbugs、Checkstyle、PMD等等。
3、Crash监控
- 把一些崩溃的信息,异常信息实时地记录下来,便于后续探讨解决。
4、Crash上载机制
- 在Crash后,尽可能先保存日志到本地,然后等下一次网络平常时再上载日志信息。
四、耗电优化
- 在移动设备中,电池的主要性显而易见,没有电什么都干不成。对于操作系统和设备开发公司来说,耗电优化一致没有静止,去追求更长的待机时间,而对于一款软件来说,并非能够忽视电量采取问题,尤其是那些被归为“电池杀手”的软件,更终的结果是被删除。因而,软件开发人员在实现需要过程中,需求尽可能降低电量的耗费。
五、安装包优化
- 软件安装包大小对软件采取没有影响,但软件的安装包越大,会员下载的门槛越高,尤其是在移动网络情形下,会员在下载软件时,对安装包大小的请求更高,因而,减小安装包大小能够让更多会员愿意下载和体验产品。
优化建议:
1. 代码搞混
采取ProGuard代码搞混器工具,它包括缩减、优化、搞混等功能。
2、资源优化
例如采取Android Lint卸载冗余资源,资源文件更少化等。
3、图片优化
例如运用AAPT工具对PNG格式的图片做缩减处理,减少图片色彩位数等。
4、重复功能的库,采用WebP图片格式
5、插件化
例如功能模块摆在服务器上,按需下载,能够降低安装包大小。