1

我正在使用具有调度间隔(即tracker.startNewSession("xxxx", 10, this);)的 android 谷歌分析。但是,在开发过程中,我注意到 SDK 不断打印有关数据库已满和最后一个事件未存储在 LogCat 中的信息。所以我决定.dispatch()在每次 API 调用后手动调用该方法,认为它会用一块石头杀死两只鸟:

  1. 更频繁地发送事件,理论上这会阻止它们备份和丢失一些事件(根据我在开发中看到的 logcat 条目)。
  2. 通过在移动无线电处于活动状态时发送任何 GA 事件来节省电池电量。

一旦我发布了它,我注意到我的 GA 统计数据(页面浏览量等)大约高出 35%;这只能意味着两件事之一,或者以前丢失了很多很多 GA 事件,或者现在错误地发送了一些事件而加倍。

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

4

2 回答 2

1

当我提高手动调用调度的速率时,我也看到了这种情况。另外它确实有意义:因为他们在本地存储数据并批量发送到服务器,所以如果某些数据被卡住了几天,我不会感到惊讶。由于数据与发送日期相关联而不是生成日期,因此您会得到不准确的统计数据。

PS:您是否看过新的示例应用程序然后为 Android SDK 提供?他们在 AsyncTask 中运行所有内容,以改进调度并且不通过网络访问访问主线程。我通过将所有事件存储在一个队列中并只运行一个 AsyncTask 进一步改进了这一点……需要将它放在 Github 上但尚未清理它。

于 2012-04-11T12:51:17.253 回答
0

EasyTracker 示例应用程序使用 AsyntTask 和网络队列来提高性能。正如 bitbox 所提到的,这可以延长电池寿命并减少丢失的曲目,而无需手动调度。

您可以从https://code.google.com/p/analytics-api-samples/downloads/list下载 EasyTracker 的 jar 和源代码

于 2012-09-18T09:09:06.693 回答