RecyclerviewExposureCollect

Introduction: RecyclerView 曝光统计组件 Demo
More: Author   ReportBugs   
Tags:

基于 Android 常用官方列表控件RecyclerView实现接近真实用户 Item 浏览曝光统计。可用于各种需要进行流量转化相关分析场景。采用装饰者模式,模块体量小、集成成本低。

快速使用

调用静态工厂类ItemViewReporterFactorygetItemReporter(RecyclerView)获得曝光统计实例。所有相关方法都是通过该实例执行。

ItemViewReporterApi itemReporter = ItemViewReporterFactory.getItemReporter(recyclerview);

注意:

  • 由于需要依赖 RecyclerView 的LayoutManager,因此推荐在 RecyclerView 初始化完成后调用此方法。
  • LayoutManager 需要是LinearLayoutManger的子类,否则会抛出异常。

初始化完成后会自动开始进行曝光监听。

获取曝光数据

有两种曝光数据获取途径:

  • 默认会在内部实现一个SparseIntArray集合,数据结构为Key/Value,kv 皆为 int 类型,key 代表 RecyclerView 对应 position 项,value 存储该项曝光次数。调用getData()获得数据集合。
SparseIntArray data = itemReporter.getData();
  • 可手动添加回调setOnExposeCallback(),拿到每一次的曝光项集合和曝光项对应 itemView 集合。
itemReporter.setOnExposeCallback(new OnExposeCallback() {
            @Override
            public void onExpose(List<Integer> exposePosition, List<View> exposeView) {
                //do something
            }
        });

其他

  • onResume()

    RecyclerView 容器生命周期,根据业务需要,可在 RecyclerView"可见"时调用,每调用一次会增加一次曝光。例如:Activity 生命周期 onResume(),Fragment 生命周期 onVisible(true)。

  • reset()

    重置内部曝光集合。根据业务需要可在 item 位置发生变化时调用。

  • release()

    释放相关资源,避免造成 OOM 以及一些额外的性能损耗。注意该方法调用后不要再使用其他任意方法,否则会抛出异常。

  • setTounchInterval(long interval)

    多次点击滑动时的最小间隔,低于该间隔的点击曝光事件将不处理,单位为 ms。

  • SetResumeInterval(long interval)

    多次可见时的最小间隔,低于该间隔的可见曝光事件将不处理,单位为 ms。

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools