Android APP开发性能如何优化?

McFishAPP · · 212 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

说到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开发小程序开发等方案提供商。联系方式;成都:028-65779811  深圳:17665357070 邮箱:sales@mcfish.cn   您还可以:点击我在线咨询

本文来自:开源中国博客

感谢作者:McFishAPP

查看原文:Android APP开发性能如何优化?

212 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet