背景
在Android中需要添加大数据埋点,统计用户操作行为
通常情况下,我们会在每个按钮的onClick()方法中埋点,为了减少代码耦合度,我们可以采用动态打点的方式埋点。
动态打点原理
通过分析Android系统View类的源码,发现 Android中View事件触发会调用:
sendAccessibilityEvent(int eventType)
该方法实现如下:
public void sendAccessibilityEvent(int eventType) {
if (mAccessibilityDelegate != null) {
mAccessibilityDelegate.sendAccessibilityEvent(this, eventType);
} else {
sendAccessibilityEventInternal(eventType);
}
}
只要设置了代理就可以拦截View的Click事件。
View.AccessibilityDelegate具体说明请参考Android的开发者文档。
具体实现
在github中提供了项目源码:https://github.com/chuanshen/ClickTracker
实现步骤:
-
通过注解的方式绑定ViewId 和 EventId的关系(示例中在EventEnum中加入@DataId)
-
在ClickTracker中做事件拦截操作,当事件触发的时候会回调clickTracker(view, eventId);
-
继承ClickTracker并重写clickTracker(view, eventId)方法,实现自己的逻辑
网友评论