Android平台Piwik-SDK源码解析(一)

本文将对Android平台上的Piwik-SDK挑选一个追踪页面事件的流程进行部分源码解析。

这是Piwik-SDK的github地址:https://github.com/piwik/piwik-sdk-android

我们来看一个追踪页面事件的完整方法:

TrackHelper.track()
                .screen("/custom_vars")
                .title("Custom Vars")
                .variable(1, "first", "var")
                .variable(2, "second", "long value")
                .with(getTracker());
首先我们调用track()方法获得一个TrackHelper对象:

 public static TrackHelper track() {
        return new TrackHelper();
    }
该对象拥有screen()、event()等一系列追踪方法,该类还拥有BaseEvent用于上传数据的内部类等,功能繁多。
接下来我们看看screen()方法,它直接new一个Screen对象(Screen同样是TrackHelper的内部类),并在构造方法中初始化入参,super()方法其实是在BaseEvent类中构造一个基础的TrackHelper对象,用于获取一个baseTrackMe对象用作其它用途,在此先不详谈。

 Screen(TrackHelper baseBuilder, String path) {
            super(baseBuilder);
            mPath = path;
        }
同样的,该类的title()方法也初始化了入参:

public Screen title(String title) {
            mTitle = title;
            return this;
        }
然后我们看看它究竟对这些参数做了什么操作:
public TrackMe build() {
            if (mPath == null) return null;
            final TrackMe trackMe = new TrackMe(getBaseTrackMe())
                    .set(QueryParams.URL_PATH, mPath)
                    .set(QueryParams.ACTION_NAME, mTitle);
            if (mCustomVariables.size() > 0) {
                //noinspection deprecation
                trackMe.set(QueryParams.SCREEN_SCOPE_CUSTOM_VARIABLES, mCustomVariables.toString());
            }
            for (Map.Entry<Integer, String> entry : mCustomDimensions.entrySet()) {
                CustomDimension.setDimension(trackMe, entry.getKey(), entry.getValue());
            }
            return trackMe;
        }

在Screen类的build()方法里,我们看到他们被保存到了一个TrackMe对象的HashMap中,同样地,若传入了非空的自定义变量对象mCustomVariables,也一并保存。build方法返回了一个TrackMe对象,那这个方法什么时候被调用呢?没错,就是在最后调用的with()方法里:

public void with(@NonNull Tracker tracker) {
            TrackMe trackMe = build();
            if (track
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值