Android全埋点解决方案--读书笔记3

$代理Window.Callback全埋点方案

是Window.Callback是Window类的一个内部接口。当Window接收到外界状态改变的通知,就会回调其中的相应方法。比如,当用户点击某个控件时,就会回调Window.Callback中的dispatchTouchEvent(MontionEvent event)方法。

在应用程序自定义的Application的onCreate()方法中初始化埋点SDK,并传入当前的Application对象。埋点SDK在拿到这个Application对象之后,就可以调用Application的registerActivityLifecycleCallback方法来注册Application.ActivityLifecycleCallbacks回调。这样,埋点SDK就能对应程序中所有的Activity的生命周期事件进行集中处理(监控)了。

案例:

第一步,新建一个项目(Project) 在新建的空项目中,会自动包含一个主module,即app。

第二步,创建sdk module  新建一个Android Library module,名称sdk

第三步,添加依赖关系  app module需要依赖sdk module。可以通过修改app/build.gradle文件,在其dependencies节点中添加依赖关系。

第四步,编写埋点sdk 在sdk module中我们新建一个埋点sdk主类,即SensorsDataAPI.java。

第五步,注册ActivityLifecycleCallbacks回调  通过调用埋点SDK的内部私有类SensorsDataPrivate.java的registerActivityLifecycleCallbacks(Application application)方法来注册ActivityLifecycleCallbacks回调的

第六步,通过MotionEvent找到那个被点击的view对象。包含了当前点击事件的详细信息。

第七步,初始化埋点SDK 在app module中新建MyApplication.java类,该类继承Application,然后在onCreate方法中初始化sdk。

第八步,配置MyApplication 最后,在AndroidManifest.xml文件的application节点中配置我们上一步自定义的MyApplication。

至此,基于代理Window.callback的全埋点方案就算完成了。

扩展1 支持采集RatingBar的点击事件

扩展2 支持采集SeekBar的点击事件

扩展3 支持采集Spinner的点击事件

扩展4 支持采集ListView GridView的点击事件

扩展5 支持采集ExpandableListView点击事件

缺点:由于每次点击时,都需要遍历一次RootView,所以效率相对来说比较低,对应用程序的整体性能影响也比较大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值