美文网首页功能区Android开发Android开发经验谈
08 性能优化-耗电优化-绘制耗电

08 性能优化-耗电优化-绘制耗电

作者: 凤邪摩羯 | 来源:发表于2021-04-13 09:19 被阅读0次

检测错误的UI绘制刷新导致的耗电

首先打开开发者选项,打开GPU视图更新的开关,然后看看应用内部有哪些不必要的UI刷新,

场景一(自定义TextView)

image image

首页快速组队页面,列表中查看更多在一直刷新,直接看代码,

image

这里有一个自定义View,继续看TextViewWideContent的代码

image

分析代码发现在onDraw()里面调用了setPadding(),继续看setPadding()的源码,

image

可以看到这里面调用了页面invalidate(),这就导致了onDraw()方法的循环调用,所以页面会持续刷新。结论就是在自定义View的onDraw()方法里面,调用setPadding(),会导致页面重复绘制
解决办法也很简单把setPadding放到onLayout()里面去。

场景二(CoordinatorLayout+AppBarLayout错误的依赖关系)

image

错误代码如下:

image

在CoordinatorLayout+AppBarLayout页面结构中,错误的将底部依赖于头部控件,导致底部一直在刷新,去掉 app:layout_anchor="@id/user_appbar_layout" 就好了。

场景三(游戏专区页面视频播放导致整体页面刷新)

image

具体原因还在排查,可能是第三方库导致的,要更换只能换库。

场景四(麦位刷新)

image image

聊天室麦位刷新导致的的页面重绘,这边似乎是需求如此,需要定期刷新。可能有更好的实现方式,先记录一下。

总结一下:

  • 首先自定义View的onDraw()方法里面,不要调onPadding(),如果一定要调用,请放在onLayout()里面设置。
  • CoordinatorLayout+AppBarLayout 结构中,错误的使用app:layout_anchor="@id/user_appbar_layout" 导致整个底部刷新。

相关文章

  • 08 性能优化-耗电优化-绘制耗电

    检测错误的UI绘制刷新导致的耗电 排除由于错误的绘制方法,导致CPU占用过高,进而导致耗电量高 检测方式参考大众点...

  • 08 性能优化-耗电优化-耗电监控

    利用Hook方式监控排查耗电 Java Hook Hook 方案的好处在于使用者接入非常简单,不需要去修改自己的代...

  • iOS性能优化 - 整理

    本文主要包含: 性能优化 - 卡顿性能优化 - 耗电优化性能优化 - APP启动优化安装包瘦身 一  性能优化 -...

  • 对于手游的优化

    给手游做优化,无非就CPU性能优化、内存性能优化、资源优化、GPU优化、IO优化、网络优化、耗电优化这些,为此汇总...

  • Android应用性能优化

    一.绘制优化 二.内存优化 三.存储优化 四.稳定性优化 五.耗电优化 六.安装包大小优化

  • APP耗电性能优化

    APP耗电性能优化 一、主要耗电量原因 1、CPU 处理2、网络3、定位4、图像处理,GPU 二、优化 1、尽可能...

  • 性能优化 - 耗电优化

    尽可能减少CPU GPU的功耗 少用定时器 优化文件I/O操作尽量不要频繁写入小数据,最好批量一次性写入读写大量数...

  • 性能优化-耗电优化

    耗电优化 耗电检测工具 Battery Historian是一款Google提供的Android系统电量分析工具,...

  • 08 性能优化-耗电优化-综述

    主要参考资料:Android程序性能优化之耗电优化[https://zhuanlan.zhihu.com/p/13...

  • iOS底层原理 - 性能优化 之 耗电优化

    面试题引发的思考: Q: 项目优化从哪几方面着手? 耗电优化、启动优化、卡顿优化、APP瘦身。 Q: 耗电优化的几...

网友评论

    本文标题:08 性能优化-耗电优化-绘制耗电

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