sensorsdata / sa-sdk-android

神策数据官方 Android 埋点 SDK,是一款轻量级用于 Android 端的数据采集埋点 SDK,包含代码埋点、全埋点、点击图和可视化全埋点功能。全埋点通过配合神策官方 Android 埋点插件来实现,神策数据官方 Android 埋点插件使用字节码插桩(ASM)的技术实现 Android 端的全埋点(无埋点、无码埋点、无痕埋点、自动埋点)。
http://opensource.sensorsdata.cn
Other
1.32k stars 434 forks source link

阅读你们的源码发现几个问题 #2

Closed xpleemoon closed 7 years ago

xpleemoon commented 7 years ago

引言

在编写统计自己的统计sdk之前,阅读了你们的源码,由于自身项目较赶,因而没有时间给你们提pull request。因此,就建立一个issue,给你们反馈几个通过代码发现的bug。

bug

  1. 事件录入数据库发生在UI线程,比如:调用链SensorsDataAPI.trackEvent()->AnalyticsMessages.enqueueEventMessage()->DbAdapter.addJSON()
  2. 多条sql语句执行,未使用SQLite的事物操作,比如addJSON()方法,这会引起多条sql语句执行的性能问题。万一执行中断,因没有事物操作,那么数据回滚就不可能发生
  3. 统计的定时发送问题,你们当前的实现是:正常情况下,每到来一条数据,都通过Handler.sendMessageDelayed()发送,其实相当于人为的在消息队列中加入一条条延迟一定间隔时间执行的消息,那么这就容易引起消息队列数据过多或者队列过长,另外通过Handler.sendMessageDelayed()的定时是基于相对时间的。
    • 可以考虑使用ScheduledExecutorService实现定时
wangzhzh commented 7 years ago

非常感谢您提的宝贵意见! 针对这三个问题,我们会尽快一一确认和修复。 另外,你也可以加我微信,方便与你进一步沟通: xxxxxxxxxxx

xpleemoon commented 7 years ago

不好意思,你的微信是xxxxxxxxxxx?微信上搜索不到

wangzhzh commented 7 years ago

不好意思,之前关闭通过手机号搜索了。 你再试一下。