美文网首页Android UI
ListView中item浏览事件埋点

ListView中item浏览事件埋点

作者: 奋斗小小鸟 | 来源:发表于2018-01-18 20:28 被阅读0次

1.背景

最近遇到一个需求:一个ListView中有30多个item,每个item划入屏幕算一次item的浏览事件,并且如果在很快的时间内(例如1秒)又划出了屏幕,就不算浏览事件。

之前一直都是RecyclerView,对于RecyclerView可以通过重写onViewAttachedToWindow(VH holder)和onViewDetachedFromWindow(VH holder)这两个方法完成这个功能。ListView是否也有类似的机制呢(也行你会问为啥不用RecyclerView,因为老的代码用的是ListView,逻辑很复杂,重构成RecyclerView太耗时耗力了)

找了一上午,终于找到了解决办法,关键的代码就是需要实现AbsListView.RecyclerListener接口并在onMovedToScrapHeap(View view)方法里面实现相应的功能(实现了类似RecyclerView的onViewDetachedFromWindow(VH holder)方法的功能):即在item离开屏幕的时候系统会回调这个方法

2.AbsListView.RecyclerListener

AbsListView.RecyclerListener

3.实现思路

3.1 item划入屏幕埋点

 item划入屏幕的时候会调用Adapter的getView方法。在这个方法里面发送一个延迟消息(1秒后进行item浏览事件的埋点)

item划入屏幕埋点

3.2 item划出屏幕取消埋点

item划出屏幕的时候,系统会调用onMovedToScrapHeap方法。在这个方法里面取消延迟消息的发送(这样就达到了快速滑动的时候不计入浏览埋点,而正常情况下会计入浏览埋点的功能)

item划出屏幕取消埋点

3.github

https://github.com/fightingBirdCaiy/Util  入口类为ListViewCtrActivity

相关文章

网友评论

    本文标题:ListView中item浏览事件埋点

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