应用于app的数据追踪----自动生成文件路径

最近数据中心需要对我们的app进行数据追踪,主要用于对用户行为进行统计。对于数据埋点这一块,友盟可以完成基本的功能。但是在这个大数据时代,数据就是金钱。

需求是这样,对于用户的每个行为,要想服务器传递用户所在界面到来的路径以及点击事件。例如我们有activity A 、B、C,我们从A点击某个weight01到B 再点击02到C再点击03,那么发送C点击03的数据上报为:rout为A01B02C,po为C03。

撸主本来想了两种方法,在每个固定的activity或者fragment中手动添加埋点,这样做没有什么技术含量,而且封装的不够完美,对于来回切换的界面比较麻烦,而且代码比较冗余。所以就想用一劳永逸的办法。

思路是这样,创建两个arraylist作为存放Activity以及po的栈,然后再BaseActivity的onCreate方法中往栈内添加值。

if (!(this instanceof CommonWebActivity) ) {
    XYAgentConstants.changeViewTag(getClass(), null, isAdd);
}
public static void changeViewTag(Class classN, String type, boolean isAdd) {
    String viewTag = AppUtils.getClassTag(classN, type);
    if (TextUtils.isEmpty(viewTag)) {
        return;
    }
    if (isAdd) {
        addViewTag(viewTag);
    } else {
        removeViewTag(viewTag);
    }
}

其中if中判断的是你不像添加到栈内的Activity。
并且创建一个静态map存放Activity与对应编码关系,这样可以在读取路径的时候将Activity名称翻译成与服务器商定的编码。
存放po的方法也同上。
需要添加数据埋点的地方只需要操作po即可,Activity则只需要集成BaseActivity就行了。
这样在获取rout以及po的时候只需要遍历两个list,按照顺序读取出来就行了。
 
注意:如果app是singletop的情况则应该注意每次回到singetop的Activity时应该在栈内判断,如果当前Activity是top,则清空Activity栈。

在昨晚这个以后我发现用一个Map替代两个List效果可能更好,有时间会去改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值