android-tagview icon indicating copy to clipboard operation
android-tagview copied to clipboard

Performance improvement detected by BlockCanary

Open markzhai opened this issue 9 years ago • 12 comments
trafficstars

TagView

private void drawTags() { ... View tagLayout = (View) mInflater.inflate(R.layout.tagview_item, null); ... }

drawTags is called in addTag, which makes it inflate multiple times if we iterator server result to addTag.

Suggestion: maybe expose a method to call drawTags, instead of call it everytime when add a tag.

markzhai avatar Apr 14 '16 07:04 markzhai

mInflater.inflate的View缓存下来List<View>。下次再从服务端拿数据,比如下拉刷新的时候,判断缓存是否存在,存在拿出View加载数据+渲染样式,缓存不够,则mInflater.inflate。

CaMnter avatar Apr 14 '16 09:04 CaMnter

@markzhai 为什么两个中国人,用英文交流?

CaMnter avatar Apr 14 '16 09:04 CaMnter

@CaMnter 啊擦 外面的README是英文啊。。。 耗时的是inflate,但其实这里的addTag没必要每次都去调用drawTags,其实我只需要最后全部都add完了再drawTags一下。现在的drawTags会遍历所有tag,这样等于做了很多没用的活儿。

markzhai avatar Apr 14 '16 09:04 markzhai

soga! @markzhai @kaedea 出来背锅吧。

CaMnter avatar Apr 14 '16 09:04 CaMnter

@kaedea 另一个问题:要动态修改tag为Deletable的话,也没有接口去触发重绘。。。

markzhai avatar Apr 14 '16 09:04 markzhai

@markzhai 目前,他已经在开发加载插件化架构开发中炸裂了,这个库子一时半会没时间修 2333 ,实在不行你来个PR吧 2333。

CaMnter avatar Apr 14 '16 09:04 CaMnter

@CaMnter 卧槽,不好好工作,去搞插件开发,竟然不炒鱿鱼

markzhai avatar Apr 14 '16 09:04 markzhai

@markzhai 开发那个就是他的工作,此库子被你发掘出来,已经成为了他的黑历史,2333 。

干的漂亮!

CaMnter avatar Apr 14 '16 09:04 CaMnter

@CaMnter 另外几个功能类似的,都没他这个好用,虽然这个也有坑。。。

markzhai avatar Apr 14 '16 09:04 markzhai

这个裤子从2015.05开始就有重构的计划: 1.改用SpannerString; 2.增加动画; 3.增加TAG排序和组合的策略; (-ω-`)⌒)_ 工作累成狗

kaedea avatar Apr 14 '16 09:04 kaedea

@markzhai 做过类似的需求,用的是FlowLayout ,动态addView进去。

CaMnter avatar Apr 14 '16 09:04 CaMnter

等新桌子到后,来一波重构吧

kaedea avatar Apr 15 '16 08:04 kaedea