美文网首页app优化
Android开发页面帧率优化有感

Android开发页面帧率优化有感

作者: 爱你为你做饭 | 来源:发表于2019-10-21 16:03 被阅读0次

Android APP 优化工具分析
Android App优化之消除卡顿
Android性能优化:卡顿优化
Android性能优化---消除卡顿
Android性能优化: 正确使用异步任务

针对Android页面帧率介绍,帧率卡顿工具,卡顿优化上面已介绍很详细,看下面内容前也强烈建议先看上面的内容,下面的更多是对上面的简单总结及其开发中自己的一点感悟,更多的是备份后续复习查看。

  1. 帧率介绍:60帧/16ms 比较关键的两个指标,不再详述
  2. 工具介绍:


    分析工具

    备注:

  • Android studio 中提供的profile中的cpu面板,内存面板,网络面板,电量面板是当前很好用的性能优化面板。
  • 框架:AndroidPerformanceMonitor类似于leakcanary(内存泄露采集工具)以别名:BlockCanary被熟知,采集方式也类似于leakcanary,框架会将比较耗时的逻辑操作以UI的形式显示,方便分析和处理
  • hierarchy Viewer可以很方便的分析页面布局的层级结构,简化页面组件层级进而达到页面帧率优化的目的。
  1. 帧率卡顿原因:
  • 页面复杂造成页面层级过深
  • 过度绘制(项目开发中很容易遗漏点,在bindData数据的时候,设置背景图片和设置view动态显示与否很耗时的,后面会有介绍)
  • UI线程执行耗时逻辑操作
  • 结合项目内存,频繁的内存gc,因为Android是自动管理内存,在内存gc的时候,会停止掉所有线程的所有操作,也包括UI线程,所以频繁的gc会阻碍页面Ui的刷新。
  • 不合规范的异步任务的使用
  1. 优化方案:
  • 结合上面的原因可以逐个对其优化,针对多层级问题,结合先前的文章AndroidUI适配总结
    尽可能的减少页面层级关系,特别是Android当前官方主推的ConstraintLayout利用约束布局可以很大程度上减少层级关系。
  • 过度绘制:利用手机设置中提供工具查看页面绘制层级,对齐层级多层的对齐view及其页面RootView进行分析去掉没必要的绘制。
  • UI线程执行耗时操作,利用cpu面板和手机提供gpu层级关系分析耗时逻辑,对齐优化即可,还有就是系统提供测试阶段的StricMode严格模式的使用,对于ui线程的Io,数据访问等耗时不规范逻辑代码很有益处。
  • 内存优化不再详述,具体参考:Android内存优化有感
  1. 开发中一些实测感悟等:
  • 系统方法往往比较耗时,比如时间格式化方法SimpleDateFormat(format),getimei等方法,建议做缓存机制,通常为了方便简单可能都是直接调用系统方法,甚至UI线程频繁调用,会影响页面帧率刷新造成卡顿。
  • BitmapFactory.decodeResource在项目代码中解析资源图片也是很耗时操作,这个操作多在view创建或者view设置数据的时候使用,这样不仅影响页面快速刷新,每个view都持有创建的图片对内存也有影响,所以建议创建项目bitmap缓存池,将通用map放入,进入项目时初始化,其他地方只是使用即可。
  • 当前项目打点已经成为越来越重要的需求,页面view曝光也就成为很重要的环节,在recyclerview等列表view中建议在view的onattchtowindow时打点而不是在滑动过程中去打点,打点涉及到数据的组装可能涉及到耗时操作对列表滑动有影响。
  • 当前使用CoordinatorLayout,AppBarLayout,Recyclerview实现一些特殊效果(主要是行为:appbar_scrolling_view_behavior实现),如果不进行下面设置会有一卡一顿的体验,即:


    Appbarlayout行为特殊设置

相关文章

网友评论

    本文标题:Android开发页面帧率优化有感

    本文链接:https://www.haomeiwen.com/subject/upfcmctx.html