美文网首页Android开发经验谈Android开发
EMUI,你屏蔽广告需要这么赶尽杀绝么?

EMUI,你屏蔽广告需要这么赶尽杀绝么?

作者: MrTrying | 来源:发表于2018-11-30 00:37 被阅读11次

昨天遇到一个比较诡异的问题,一个页面的底部一个模块UI,在荣耀9i上始终不显示,抓包看了数据都没有问题。

模块是在ListViewfooter中,刚开始怀疑是footer导致的问题,但是其他的手机都没有问题,所以确认一遍代码没有问题便放弃了这个方向。

使用Tools->Layout Inspector查看页面的布局,发现那个模块没有显示,是因为visibility的属性是GONE,这时候就觉得很奇怪了,明明都有数据了,所以地方都设置显示了。怎么最后会是GONE属性呢?

然后同事就开始怀疑这个模块的setVisibility的方法了,于是重写了方法加上一句日志,打印visibility的值,结果发现比正常逻辑调用setVisibility方法的次数要多一次。

于是debug断点确认问题,除了刚开始隐藏,到数据返回回来显示UI之后,有调用了setVisibility方法。从方法调用堆栈的记录中看到,调用setVisibility方法的是blockAdClick.HwButton,而之后的调用时View的源码调用,继续往下看会发现有当前模块的setVisibility方法。

看到这里,有了一个新的推论:是不是荣耀9i对调用setVisibility方法的类有广告相关的关键词(例如:ad,广告)判断,如果包含这类词会在底层拦截系统方法,并在此隐藏。这样诡异的问题才能解释的通。

于是重命名了UI模块的类名,运行测试一下,问题就解决了。

以后打算以后用Hw来代替Ad这个关键词,EMUI有本事你把这个关键词也过滤啊!

相关文章

网友评论

  • Chenstyle:这种问题其实是最难受的。如果在测试阶段没有发现,会在发布之后给用户造成很大的困扰
    MrTrying:@Chenstyle 还好是在测试阶段发现了。本来还想配图的,但是想重现的时候又没有问题了

本文标题:EMUI,你屏蔽广告需要这么赶尽杀绝么?

本文链接:https://www.haomeiwen.com/subject/qvgqcqtx.html