介绍一些项目中遇到实际bug:
- RecyclerView中,每个item 都有一个不停运行的动画,选中1个后开始运行,来回点击不同的item,cpu会越来越高,原因是app:lottie_autoPlay="true"使暂停的动画的item也收到回调,取消选中时cancel掉动画就好了
- 软件绘制阴影背景时,因为setLayerType(LAYER_TYPE_SOFTWARE之后,每一帧都触发buildsoftwarelayer,改成图片背景
- 带阴影的imageview在不停旋转时,cpu越来越高, 因为elevation的原因,无法在旋转动画中使用<style name="ShadowStyle">
<item name="android:elevation">10dp</item><item name="android:outlineAmbientShadowColor">#12001160</item><item name="android:outlineProvider">bounds</item><item name="android:outlineSpotShadowColor">#80000000</item> </style>
- 放webp 动画占用了%60+ cpu:fresco、glide播放webp动画时,2个glide线程分别以 50ms 1次刷新webp图片(使用帧动画可以降低30%(800%) cpu)
- 跑马灯,系统MarqueeTextview占用20%(800%),优化后可以降到5%(800%),优化方向是降低MarqueeTextview频率
- 音频播放时,播放上下跳跃的动画占用 25%(800%) cpu:因为自己新建了一个40ms刷新一次的子线程,和16.6ms 刷新1次主线程频率不同步所以导致的主线程随时被唤醒,非常忙碌。解决方法是借用主线程的刷新频率来做动画,3帧刷新1次跳跃动画,cpu降低到7%(800%)
- 持续更新......