美文网首页
ArrayList使用不当导致污染美颜集合问题

ArrayList使用不当导致污染美颜集合问题

作者: fyg | 来源:发表于2020-07-14 02:05 被阅读0次

调用 ByteDancePlugin.getBeautyList() 返回美颜集合【美白,磨皮,锐化】
调用ByteDancePlugin.getShapeList() 返回美型集合【大眼,瘦脸】

当调用 ByteDancePlugin.getBeautyList() 返回美颜集合,又addAll了所有的美型集合导致该问题代码如下图:


error.png

以后我每次打开 对话框 ,里面的美型数据就多了一份,,关于这个问题 ,

我问字节跳动的相关人员 , sdk有没有设置 美颜的方法,人家说没有,,这是哪里出现问题了呢?

难道有地方给它设置数据? 设置数据的方法有那些?通过反射,,人家的sdk是经过混淆的,,

反复猜想 ,,,是它返回的List 原始集合, 我往里面又加入了 美型的集合,,所以就污染了它 美颜集合,(猜想,获取美颜集合时,它sdk内部会判断内存中是否有如果有就直接返回 ,而不会再读json文件 )

修改方法是 :

new ArrayList 分别把 美颜 和 美型 的集合放到里面去,这样就不会污染 它们的数据了。new ArrayList 的方式 是浅拷贝。 修改后的代码:


right.png

注意点:

如果我要是该sdk相关开发人员,提供 getBeautyList()或 getShapeList() 时,会返回一个 美颜或美型集合的副本,,这样也不至于熊孩子把我的sdk给玩坏

最终效果如下图:

ok.jpeg

关注我的github

https://github.com/fuyuguang
带你了解更多项目实践中的bug

相关文章

网友评论

      本文标题:ArrayList使用不当导致污染美颜集合问题

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