BiuTextView替代TextView

Android  小知识  2023年3月23日 am9:14发布2年前 (2023)更新 91es.com站长
59 0 0

前言

Android 高版本后,TextView走马灯耗CPU

使用BiuTextView替代TextView来实现跑马灯

注意,下面测试还要其他应用使用surfaceflinger,所以很高,我们只是对比同一环境下,BiuTextView和TextView跑马灯的情况。

正文

说明:Demo中只放了1个TextView或BiuTextView进行跑马灯

TextView跑马灯

只要当前界面有TextView的走马灯,CPU占用就高起来。

可以通过

//比如过滤:com.biumall.demo
adb shell top | grep demo
  1. grep跟当前电脑环境有关

  2. 这里只看surfaceflinger和走马灯CPU占用情况

命令查看某个进程的CPU占用

  103    surfaceflinger
 37.5    com.biumall.demo+
  104    surfaceflinger
 36.0    com.biumall.demo+
  103    surfaceflinger
 36.6    com.biumall.demo+
  108    surfaceflinger
 33.6    com.biumall.demo+
 90.0    surfaceflinger
 38.0    com.biumall.demo+
  108    surfaceflinger
 37.6    com.biumall.demo+
  107    surfaceflinger
 37.3    com.biumall.demo+
  105    surfaceflinger
 36.6    com.biumall.demo+
  103    surfaceflinger
 38.0    com.biumall.demo+
 73.3    surfaceflinger
 40.3    com.biumall.demo+
 53.0    surfaceflinger
 26.6    com.biumall.demo+
 65.0    surfaceflinger
 39.6    com.biumall.demo+
 72.6    surfaceflinger
 44.6    com.biumall.demo+
 73.0    surfaceflinger
 42.3    com.biumall.demo+
 72.6    surfaceflinger
 42.6    com.biumall.demo+
 80.6    surfaceflinger
 39.6    com.biumall.demo+
 73.3    surfaceflinger
 48.0    com.biumall.demo+
 73.0    surfaceflinger
 44.6    com.biumall.demo+
 78.3    surfaceflinger
 45.6    com.biumall.demo+
 75.0    surfaceflinger
 42.6    com.biumall.demo+
  103    surfaceflinger
 31.6    com.biumall.demo+
 66.0    surfaceflinger
 19.0    com.biumall.demo+
 86.0    surfaceflinger
 39.0    com.biumall.demo+
  101    surfaceflinger
 37.3    com.biumall.demo+
  106    surfaceflinger
 35.0    com.biumall.demo+
  106    surfaceflinger
 33.6    com.biumall.demo+
  106    surfaceflinger
 36.0    com.biumall.demo+
  109    surfaceflinger
 38.0    com.biumall.demo+
  107    surfaceflinger
 39.0    com.biumall.demo+
  106    surfaceflinger
 38.6    com.biumall.demo+
  108    surfaceflinger
 32.0    com.biumall.demo+
  107    surfaceflinger
 28.6    com.biumall.demo+
 66.6    surfaceflinger
 20.6    com.biumall.demo+
  108    surfaceflinger
 34.0    com.biumall.demo+
  107    surfaceflinger
 33.6    com.biumall.demo+
  106    surfaceflinger
 33.3    com.biumall.demo+
  107    surfaceflinger
 33.6    com.biumall.demo+

开启走马灯后,当前com.biumall.demo占用持续在40%左右,而且surfaceflinger也很高。

BiuTextView跑马灯

使用《BiuTextView.aar》中自定义的BiuTextView

 43.3    surfaceflinger
  3.3    com.biumall.demo+
 20.6    surfaceflinger
  3.6    com.biumall.demo+
 37.6    surfaceflinger
  6.3    com.biumall.demo+
 37.0    surfaceflinger
  5.6    com.biumall.demo+
 38.0    surfaceflinger
  6.0    com.biumall.demo+
 38.3    surfaceflinger
  6.3    com.biumall.demo+
 39.3    surfaceflinger
  6.3    com.biumall.demo+
 61.3    surfaceflinger
  6.6    com.biumall.demo+
 61.6    surfaceflinger
  6.6    com.biumall.demo+
 61.6    surfaceflinger
  6.3    com.biumall.demo+
 33.3    surfaceflinger
  3.3    com.biumall.demo+
 62.3    surfaceflinger
  5.6    com.biumall.demo+
 61.3    surfaceflinger
  6.0    com.biumall.demo+
 59.3    surfaceflinger
  5.6    com.biumall.demo+
 58.0    surfaceflinger
  5.6    com.biumall.demo+
 61.3    surfaceflinger
  6.0    com.biumall.demo+
 61.3    surfaceflinger
  6.3    com.biumall.demo+
 61.6    surfaceflinger
  6.0    com.biumall.demo+
 63.6    surfaceflinger
  6.0    com.biumall.demo+
 61.0    surfaceflinger
  6.0    com.biumall.demo+
 33.6    surfaceflinger
  3.6    com.biumall.demo+
 60.6    surfaceflinger
  6.3    com.biumall.demo+
 61.6    surfaceflinger
  6.0    com.biumall.demo+
 61.0    surfaceflinger
  6.0    com.biumall.demo+
 60.3    surfaceflinger
  5.6    com.biumall.demo+
 61.3    surfaceflinger
  6.3    com.biumall.demo+
 62.3    surfaceflinger
  6.6    com.biumall.demo+
 38.6    surfaceflinger
  6.3    com.biumall.demo+
 38.0    surfaceflinger
  6.6    com.biumall.demo+
 25.0    surfaceflinger
  3.3    com.biumall.demo+
 62.0    surfaceflinger
  6.0    com.biumall.demo+
 61.6    surfaceflinger
  7.6    com.biumall.demo+
 62.0    surfaceflinger
  5.6    com.biumall.demo+
 64.6    surfaceflinger
  5.6    com.biumall.demo+

测试中发现,使用SurfaceView自定义走马灯,com.biumall.demo和surfaceflinger占用较低些。

小结

虽然只是单一的一次数据,但从上面大致可以了解到。

  1. TextView跑马灯时com.biumall.demo占CPU比较高

  2. TextView跑马灯时surfaceflinger占CPU相对高

在CPU为稀缺情况下,能少占一点就尽可能少占一点。空闲CPU过少,容易导致系统卡顿。因此,如果需要跑马灯,个人推荐还是使用BiuTextView替换TextView。

复杂情况下没怎么测试,比如ListView中等列表中可能有问题。

参考文章

  1. BiuTextView.aar

 历史上的今天

  1. 2021: Android汉字转拼音以及按照[字母][数字][特殊字符]排序(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

[转]Android音频: 如何使用AudioTrack播放一个WAV格式文件?

抱歉,这篇文章代码不全,转载时没有尝试实现推荐看我新写的文章《AudioTrack简单简介之四:wav去掉文件头之解决爆音》如果你已经成功地了解了关于AudioTrack的一些话题,那么你可能享受它带来的好处,例如低延迟(在STATIC(静态)模式),能够生成流式音频(在STREAM(流)模...

叔本华:比读书更重要的是什么

不管任何藏书丰富的图书馆,假如不加整顿杂乱无章的话,它给予我们的利益还不如那些规模小藏书少,但整理得条理井然、分类清楚的图书馆,同理,不管你学识如何的渊博,如若不能反复思维咀嚼消化的话,它的价值,远逊于那些所知不多但能予以深思熟虑的知识。何以言之?因为我们若要将所学得的知识消化吸收,变为己有,并且能...

Vim替换命令

前言简单记录Vim替换命令正文利用:s命令可实现字符串的替换# 命令之间是没有间隔的,下面表示为了看的清晰:范围 s /old /new如果没有指明范围,就表示当前行:s/old/new:s/old/new/g [g 表示当前行匹配的全部替换]:,$s/old/new/g ...

Android 中Bn和Bp介绍

前言阅读Android源码时总是遇到Bnxx和Bpxx等类,老是对不上号,容易迷糊,因此这里记录一下,方便自己查阅。正文BP(binder proxy)和BN(binder native)是通过binder来通信的,Bp端可以通过BinderProxy的transact()方法与Bn端发送请...

余秋雨:我在等你

我藏不住秘密,也藏不住忧伤,正如我藏不住爱你的喜悦,藏不住分离时的彷徨。 我就是这样坦然,你舍得伤,就伤。 如果有一天,你要离开我,我不会留你,我知道你有你的理由;如果有一天,你说还爱我,我会告诉你,其实我一直在等你;如果有一天,我们擦肩而过,我会停住脚步...

SQLite中的数据排序简介

前言本文摘抄,记录Sqlite使用不同的排序方式对各种数据类型进行排序。方便自己查阅和使用。正文下面只摘抄了一部分。普通排序文本类型(Text/String):按字典顺序排序:使用ORDER BY语句,并在字段名称后添加COLLATE NOCASE。例如:SELECT * FR...