我正在使用带有调度间隔(即tracker.startNewSession("xxxx", 10, this);
)的Android的谷歌分析。但是,我在开发过程中注意到SDK继续打印有关数据库已满且最后一个事件未存储在LogCat中的内容。因此,我决定在每次API调用后手动调用.dispatch()
方法,以确定它会一举两得:
我发布后,发现我的GA统计数据(网页浏览量等)高出约35%;这可能只意味着两件事中的一件事,无论是很多还是很多GA事件之前都被丢失了,或者它现在加倍错误地发送一些事件。
任何人都有任何关于解决此问题的好方法的想法?如果它现在在报告移动浏览量和访问方面做得更好,那么这很棒。但是,如果现在因为我手动调用.dispatch()
而无法准确跟踪数据,那么这很糟糕,我应该恢复此更改。
答案 0 :(得分:1)
当我提高手动调用dispatch的速率时,这也是我所看到的。此外它确实有意义:因为它们在本地存储数据并批量发送到服务器,所以如果一些数据卡住了几天我也不会感到惊讶。由于数据与发送而非生成的那一天相关联,因此您的统计数据会出现偏差。
PS:您是否看过新的示例应用程序,然后提供Android SDk?它们在AsyncTask中运行所有内容,以便改进调度并且不会通过网络访问命中主线程。我通过将所有事件存储在一个队列中并只运行一个AsyncTask来进一步改进...需要将它放在Github上但尚未清理它。
答案 1 :(得分:0)
EasyTracker示例应用程序使用AsyntTask和网络队列来提高性能。 正如bitbox所提到的,这可以提高电池续航时间并减少丢失的音轨,而无需手动调度。
您可以从https://code.google.com/p/analytics-api-samples/downloads/list
下载EasyTracker的jar和源代码