前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[064]微信越滑越卡(补充篇)

[064]微信越滑越卡(补充篇)

作者头像
王小二
发布2021-04-09 15:35:57
6440
发布2021-04-09 15:35:57
举报
文章被收录于专栏:王小二的Android站

前言

发了[063]微信越滑越卡这个文章以后,有好多小伙伴私信我,为什么他们项目上没有出现这个问题?是否有必要集成我这个修复方案?我就来继续分析补充一下。

一、1加8T为什么并没有出现这个BUG

我再1加8T上抓了一个trace,来分析一下为什么1加8T为什么并没有出现这个BUG,而且这个手机是120hz的屏幕。

通过Trace可以发现:

1.第一个Move之前remove了所有的callback。

2.Up发生的时候,又会重新post一个callback,符合代码的逻辑。

二、为什么第一个Move之前remove了所有的callback

还记得[063]微信越滑越卡中介绍的down事件发生会postdelay一个mCheckFlywheel,delay的时间正好是40ms。

通过Trace可以发现:

1.Down和第一个Move的时间间隔是大于40ms,虽然这个手机的触控采样率大于180hz

2.因为1的条件满足,mCheckFlywheel被有效的执行了,所以第一个Move之前remove了所有的callback。

三、什么样的设备下可以复现这个问题

Down和第一个Move的时间间隔永远小于40ms

这个永远很重要,因为一旦在持续的滑动中,有一次大于40ms,就会remove了所有的callback。

四、是否需要打这个Fix Patch

1.这个Patch是没有副作用的,因为假如在1加8T上打了这个patch,只不过在Up事件发生的时候,remove callback,本来就是空的,空的情况下清理一下也没事。

2.如果你的设备Down和第一个Move的时间间隔是永远小于40ms,我建议你打这个Patch,不需要等到Android的官方释放。

总结

我觉得大家不要过分的纠结要不要打patch,大家可以按照我这个分析。

在你们项目上在微信中持续滑动一个很长的列表,抓一个trace看看,试着像我一样的分析,在考虑一下要不要打patch。

本文中Trace都是自带的trace,不是我额外添加的trace。

尾巴

图中的trace是用perfetto抓的,perfetto的教程大家可以参考一下。

[061]perfetto使用简介

https://cloud.tencent.com/developer/article/1746887

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、1加8T为什么并没有出现这个BUG
    • 通过Trace可以发现:
    • 二、为什么第一个Move之前remove了所有的callback
      • 通过Trace可以发现:
      • 三、什么样的设备下可以复现这个问题
      • 四、是否需要打这个Fix Patch
      • 总结
      • 尾巴
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档