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