性能优化:

 用户体验的性能主要总结为4个类别:

  • 流畅:使用时避免出现卡顿,响应速度快,减少用户等待的时间,满足用户期望。
  • 稳定:减低crash率和ANR率,不要在用户使用过程中崩溃和无响应。
  • 省点、省流量:节省流量和耗电,减少用户使用成本,避免使用时导致手机发烫。
  • 安装包小:安装包小可以降低用户的安装成本。

卡顿优化:

 卡顿的场景有很多,可分为4类:UI绘制、应用启动、页面跳转和事件响应,这4种卡顿的原因可为2大类:

  • 界面绘制:绘制的层级深、页面复杂、刷新不合理,这些原因卡顿的场景更多出现在UI和启动后的初始界面以及跳转页面的绘制上。
  • 数据处理:导致卡顿的原因是数据处理量太大,可分为如下3种情况

   (1)、数据处理UI线程。

   (2)、数据处理占用CPU高,导致主线程拿不到时间片。

    (3)、内存增加导致GC频繁,从而引起卡顿。

优化建议:

 1.布局优化:主要通过减少层级、测量、绘制时间和提高复用性方面入手,总结如下

  • 减少层级:合理使用RelativeLayout和LinerLayout,合理使用Merge。
  • 提高显示速度:使用ViewStub,它是一个看不见、不占布局位置、占用资源非常少的视图对象。
  • 布局复用:通过<include>标签提高布局复用
  • 减少测量:尽可能少用wrap_content,它会增加布局measure时计算成本,在已知宽高为固定值时,不用wrap_content。
  • 删除控件中无用的属性  

 2.过度绘制:屏幕上的某个像素在同一帧时间内被绘制多次,从而浪费多余的CPU以及CPU资源,避免过度绘制方法如下:

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

 3.启动优化:优化启动逻辑,提高应用的启动速度。启动主要完成UI布局、绘制和数据准备,因此启动速度优化需要以下三个过程:

  • UI布局:应用一般都有闪屏页,优化闪屏页的UI布局,可通过Profile GPU Rendering检测丢帧情况
  • 加载逻辑优化:采用分布加载、异步记载、延期加载策略提高应用启动速度。
  • 数据准备:数据初始化分析,记载数据可用线程初始化等策略。

 4.合理刷新:数据变化,需要刷新页面展示新的数据,频繁刷新会增加资源开销,并且可能导致卡顿,合理刷新注意以下几点:

  • 尽量减少刷新次数。
  • 尽量避免后台有高的CPU线程运行。
  • 缩小刷新区域

 5.动画优化:有些情况下,实现动画效果时,可以用硬件加速方式提供流畅度。

优化内存:

 没有内存

 

 

 

 

 

 

 

 

 

版权声明:本文为Mr-Deng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Mr-Deng/p/11425361.html