BiuTextView替代TextView

Android  小知识  2023年3月23日 am9:14发布2年前 (2023)更新 城堡大人
80 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、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

中文汉字和英文数字的unicode编码范围

前言最近有做相关汉字转拼音处理,因此了解一下,摘抄于此,方便查阅。好记性不如烂笔头正文虽然不常用,了解一下。基本汉字有20902字。相关汉字编码介绍GB2312编码1981年5月1日发布的简体中文汉字编码国家标准。GB2312对汉字采用双字节编码,收录7445个图形字符,其中包括...

Android消息机制之一基础简介(1)

在项目中,使用Handler是比较多的,延迟处理信息啊,或者跨线程刷新UI界面啊等.用大家都会用,但要用好,或许只能多看看源码和跟大牛们学习学习了.Handler.java,Looper.java,Message.java,MessageQueue.java这几个类主要是在/frameworks/...

毕淑敏: 流露你的真表情

学医的时候,老师出过一道题目:人和动物,在解剖上的最大区别是什么?学生们争先恐后发言,都想由自己说出那个正确的答案。这看起来并不是个很难的问题。有人说,是直立行走。先生说,不对。大猩猩也是可以直立行走的。有人说,是懂得用火。先生不悦道,我问的是生理上的区别,并不是进化工的异同。更有同学答,是...

修改Android系统时间设置到2099

前言修改Android支持的时间大于2037。系统时间限制默认是Int(有符号32位,最大0X7FFFFFFF)最大值即为: Integer.MAX_VALUE = 0X7FFFFFFF=2147483647 = 2038-01-19 11:14:07。个人流水账而已。正文将RTC时间限...

Android切换语言记录

前言记录一下Android语言切换,网上也很多,这里摘抄于此方便自己查阅正文下面代码都测试过,验证ok方式一private void language(Locale locale) { try { LocalePicker.updateLocale(locale ...

MediaPlayer源码介绍2

前言之前介绍MediaPlayer ,接上文《MediaPlayer JNI层介绍》(看做《MediaPlayer源码介绍1》)介绍到mediaplayer.cpp,这也是一个代理,真正处理的并不是这个。今天以setDataSource()为例继续分析。涉及代码frameworks\av\...