2014-04-21 106 views
4

每个Activity都要求onSessionStart(context, apikey);onSessionEnd(context);,这样可以跟踪整个活动中的会话。即使是碎片可以做同样的,但是当一个服务参与(你认为你会没有结束,而服务是做的东西),在以下情况下会发生什么:将Flurry for Android余额开始/结束会话调用?

  1. 活动在onStart() - >乱舞启动(活动上下文)
  2. 服务的onCreate - > Service.SomeActionIsHappening() - >乱舞启动(服务上下文)
  3. 活动的onStop() - >乱舞停止(活动上下文)
  4. 服务仍在运行 - >调用Service.SomeOtherAction() - > Flurry Start(Service Context)
  5. Servic e Ends - > Flurry Stop(服务上下文)。

所以平衡一直(排名不分先后):

  1. 活动开始。
  2. 活动结束。

这很好。活动开始/结束计数被平衡为0.

  1. 服务开始。
  2. 服务开始。
  3. 服务结束。

现在,您需要拨打结束第四次来平衡呼叫吗? (请记住,上下文是相同的,服务被称为启动两次,但它的呼叫结束一次)。

对于Flurry而言,只要来自同一个上下文的最后一次调用是onEndSession,它是否足以(并且有效)接收N个开始和一个(或多个)结束?

Flurry是否保留引用计数(很像可可)或只是一个上下文列表?

我还没有看到关于这个特定场景的文档。所有的文件说是这样的:(重点煤矿)

确保呼叫匹配到onEndSession 为onStartSession的每次通话,传递这是用来调用onStartSession相同的上下文对象。 注意:只要有任何已调用onStartSession而不是onEndSession的Context,会话将继续。如果一个新的Context在最后一个Context调用onEndSession的10秒内调用onStartSession,那么会话将被恢复,而不是创建一个新的会话。这可以确保在用户从应用中的一个活动转换到另一个活动时,他们不会为每个活动跟踪单独的会话,但会有跨越多个活动的单个会话。

但目前还不清楚,如果同样情况下呼叫启动10次会发生什么...

回答

1

根据我的经验,是的,它会平衡呼叫。 最近我犯了一个错误,将Flurry会话绑定到Accessibility Service OnCreate/OnDestroy并且会话永远不会结束,导致没有分析发送(如果用户启用了辅助功能服务,它将永远运行)

3

@ 323go基于什么马丁问(并回答他的自我)是不是一个问题的文件是如何完成的,相反,我们应该如何将Flurry用于服务(保持或不保持启动/停止平衡),到期服务不具有像活动/片段一样的生命周期。