Android 全埋点概述
全埋点是指无需写代码或者只写少量的代码,就能预先自动收集用户的所有行为数据,然后再根据实际的业务需求进行筛选和分析。
全埋点采集的事件目前主要包括以下四种。
AppStart事件
是指应用程序启动,包括冷启动和热启动,热启动是指应用程序从后台恢复的情况。
AppEnd事件
是指应用程序退出,包括应用程序的正常退出、按Home健进入后台、应用程序被强杀、应用程序崩溃等场景。
AppViewScreen事件
是指应用程序页面浏览,对于Android应用程序来说,就是指切换Activity或Fragment。
AppClick事件
是指应用程序控件点击,即View被点击,比如点击Button、ListView等。
其中采集难度最大的就是 AppClick事件,所以全埋点的解决方案基本都是围绕如何采集 AppClick事件 进行的。
对于AppClick事件 全埋点的解决思路有两种,“拦截”和“插入”:
拦截
拦截控件的原处理逻辑,一般是参考Android系统的事件处理机制。
插入
在控件原处理逻辑的执行前面或执行后面插入埋点代码。参考的是编译器对Java代码的整体处理流程,即:
JavaCode --> .java --> .class --> .dex
选择在不同的处理阶段”插入“埋点代码,所采用的技术也是各不相同。
这里再简单介绍一种编程思想 AOP,后面介绍 “插入” 类型的埋点方法时会用到。
AOP是Aspect Oriented Programming的缩写,即面向切面编程。平时我们接触比较多的是OOP,即面向对象编程。他们两者的区别是:
OOP
提倡的是将功能模块化,对象化,每个模块专心于自己的事情。但是有些功能是每个模块都需要的,比如日志模块,性能监控模块,按照我们平常的做法就是每个模块中再各自加上这些功能代码,这样做一方面显得代码很冗余,另一方面也不利于后期的拓展和维护。
AOP
提倡的是针对同一类问题的统一处理,我们不需要关注是哪个类哪个对象在使用,我们关注的是具体的方法和功能点。