Android APP开发性能怎么优化-深圳APP开发
发布来源:风享互联
发布时间:2018-01-30

分享

沙漠风公众号

QQ图片20180122170911.png


  说到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、插件化


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

相关资讯
为您提供高价值服务
您对下一步的新媒体营销是否有方向?沙漠风·风享互联将为您解答。
提交需求
咨询相关问题或预约面谈,可以通过以下方式与我们联系
  • 0755-83739159
    业务热线
  • 158-1856-1755
    大客户专线
准备好开始了吗,
那就与我们取得联系吧
0755-83739159
有更多服务咨询,请联系我们
请填写您的需求
您希望我们为您提供什么服务呢
您的预算

提交需求
热线
微信扫码咨询
电话咨询
0755-83739159
微信
业务热线
提交需求
官方微信