gpu呈现模式分析柱状图无故爆表的原因

在高端Android设备上,如三星Galaxy和Pixel 2,使用GPU呈现模式分析时,EditText光标闪烁导致帧率不足,表现为柱状图超绿线。此现象在低端设备上未出现。深入研究发现,Android 8.0引入的Project Butter机制为省电考虑,限制了非用户交互时的CPU频率,导致此问题。

android开发估计都会用gpu呈现模式分析来看下app运行时候的表现,不过最近遇到一个奇怪的现象,配置很好的android机器,例如三星Galaxy和pixel2,都是四五千的机器,在一个app的页面gpu呈现模式分析柱状图却会稳定的超过绿线,熟悉android的应该知道这是帧率不足的表现,应该优化。不过同样的页面在一个低端的机器例如魅蓝却不会出现这种状况,这个很是郁闷。在RecyclerView滑动的时候高端机器和低端机器才会符合预想的结果,pixel2的柱状图顶部离绿线非常远。

具体分析这个页面为啥会一直在绘制,因为不绘制的话图是不会走的,发现是EditText获取到了焦点进而光标一直闪动,这个是完全正常的行为。我又在其他app,例如短信,有EditText的页面发现了与自己app完全一样的表现,大概可以确定和app无关。高端机器都是android 8.0的版本,这个大概率是系统的原因。

在万能的google下,终于找到了解释:

https://www.raizlabs.com/dev/2017/06/the-curious-case-of-systrace-reporting-jank-on-an-edittext/

android8.0后为了省电的考虑,kernel中加入了一种机制,就是project butter

Project Butter was an undertaking by the Android team that started in Android 4.1 Jelly Bean in an effort to improve the touch latency and animation performance on Android devices. One of the ways this was achieved was by doing some clever CPU scaling which would increase the clock speed upon user input. 

这种机制也就是可以想象的限制cpu频率啦,在用户和终端交互的情况下,cpu会高频率运行,在非交互一段时间后cpu会降频。user input对手机端来说基本就是触摸屏操作。很简单的实验,在app页面不停的点击一个没有处理click的View,gpu呈现模式柱状图会瞬间落下成为正常状态。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值