android 埋点实现方案 - 源代码篇

接上篇,看看部分源代码,没什么干货,已脱裤子的请绕路。

埋点记录类:Recorder.java

android 埋点实现方案 - 源代码篇_第1张图片

可以看到record方法,只是将埋点的存储动作(iLogCache.record)封装成 Runnable,然后通过持有的 Handler 对象 post 给 相应的 HandlerThread。HandlerThread 接受该消息后便执行该动作。

Recorder.java 职责分明,就只有record 方法,然后没了。

埋点发送类:Sender.java

android 埋点实现方案 - 源代码篇_第2张图片

可以看到 send方法,只是将埋点的发送动作(trySend 网络请求方法)封装成 Runnable,然后通过持有的 Handler 对象 post 给 相应的 HandlerThread。HandlerThread 接受该消息后便执行该动作。

这里加上了重试方法,发送失败会通过 Recorder对象再次存储起来,直至三次重试之后。

同样 Sender 也是职责分明,只负责发送 (send方法)。

埋点读取类:ReaderThread (线程)

android 埋点实现方案 - 源代码篇_第3张图片

埋点读取类只是简单的一直轮询数据缓存对象(ILogCache),当不为空的时候,通过埋点发送类(Sender)发送埋点。

最后,LogServiceV2.java

android 埋点实现方案 - 源代码篇_第4张图片

LogServiceV2 继承了Service。在init 方法里初始化了 Recorder,Sender,ReaderThread 这三个关键角色。

整个方案的源代码篇到此结束。

至于怎么用嘛,

startService,然后调用Recorder.record方法就可以了。实际项目里,也仅有LogServiceV2 与 Recorder 对外公开,而Recorder 更是一个单例,方便外层直接 getInstance().record()。

贴了代码,有没有清晰些呢,各位看官。

你可能感兴趣的:(android 埋点实现方案 - 源代码篇)