我正在开发一个有10个活动的应用程序。我正在我的应用中集成Google和Flurry分析。对于GA,我正在维护一个全局跟踪器对象,该对象在启动器活动中启动,并在应用程序关闭时停止。对于Flurry,我在每个活动的onCreate中开始会话,并在每个活动的onStop中停止会话。
现在,当我多次使用我的应用程序时,当看到GA和Flurry配置文件的统计数据时,我发现GA显示的访问次数太高而Flurry的访问次数非常低。
我猜如果应用程序停止会话,Flurry不会启动新会话,我们会在10秒后重启应用程序。这是计数之间存在差异的原因还是代码可能有问题。
答案 0 :(得分:0)
首先,您的应用程序的launchmode是什么? http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
如果您允许多个实例,那么用户可能会在同一会话中多次点击相同的启动器活动,Google可能将其视为额外会话。
其次,不保证调用onStop()。 onPause实际上是保证发生的最后一个状态:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle这可能与此没有任何关系,因为会话计数是在公开调用之外完成的,但无论如何都要注意这一点。
一个有趣的测试是在应用程序刚出现时在Flurry和GA中发起“app launch”事件。那么你将拥有一个比会话更模糊的数据点来比较这两个数据点,看看哪个报告过高或过低。
答案 1 :(得分:0)
将您的Flurry onStartSession
电话移至onStart
。
onCreate
只被调用一次,而每次活动到达前台时,它都会通过onStart
。 Flurry以与堆栈类似的方式处理活动。 onStartSession
将一个活动放在堆栈上,onEndSession
将其弹出。如果在某个超时后没有剩余,则SDK会有效地结束会话。
通过onStartSession
中的onCreate
来电,您可以通过创建每项活动获得有效的会话,但如果您回到该活动,则会话即将结束。将onStartSession
移至onStart
会修复此问题。