手动调度Android版Google Analytics

时间:2012-04-11 11:54:27

标签: android google-analytics

我正在使用带有调度间隔(即tracker.startNewSession("xxxx", 10, this);)的Android的谷歌分析。但是,我在开发过程中注意到SDK继续打印有关数据库已满且最后一个事件未存储在LogCat中的内容。因此,我决定在每次API调用后手动调用.dispatch()方法,以确定它会一举两得:

  1. 更频繁地发送事件,这理论上会阻止它们备份并丢失一些事件(根据我在开发中看到的logcat条目)。
  2. 在移动无线电处于活动状态时,通过发送任何GA事件来节省电量。
  3. 我发布后,发现我的GA统计数据(网页浏览量等)高出约35%;这可能只意味着两件事中的一件事,无论是很多还是很多GA事件之前都被丢失了,或者它现在加倍错误地发送一些事件。

    任何人都有任何关于解决此问题的好方法的想法?如果它现在在报告移动浏览量和访问方面做得更好,那么这很棒。但是,如果现在因为我手动调用.dispatch()而无法准确跟踪数据,那么这很糟糕,我应该恢复此更改。

2 个答案:

答案 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和源代码