每个Activity
都要求onSessionStart(context, apikey);
和onSessionEnd(context);
,这样可以跟踪整个活动中的会话。即使是碎片可以做同样的,但是当一个服务参与(你认为你会没有结束,而服务是做的东西),在以下情况下会发生什么:将Flurry for Android余额开始/结束会话调用?
- 活动在onStart() - >乱舞启动(活动上下文)
- 服务的onCreate - > Service.SomeActionIsHappening() - >乱舞启动(服务上下文)
- 活动的onStop() - >乱舞停止(活动上下文)
- 服务仍在运行 - >调用Service.SomeOtherAction() - > Flurry Start(Service Context)
- Servic e Ends - > Flurry Stop(服务上下文)。
所以平衡一直(排名不分先后):
- 活动开始。
- 活动结束。
这很好。活动开始/结束计数被平衡为0.
- 服务开始。
- 服务开始。
- 服务结束。
现在,您需要拨打结束第四次来平衡呼叫吗? (请记住,上下文是相同的,服务被称为启动两次,但它的呼叫结束一次)。
对于Flurry而言,只要来自同一个上下文的最后一次调用是onEndSession,它是否足以(并且有效)接收N个开始和一个(或多个)结束?
Flurry是否保留引用计数(很像可可)或只是一个上下文列表?
我还没有看到关于这个特定场景的文档。所有的文件说是这样的:(重点煤矿)
确保呼叫匹配到onEndSession 为onStartSession的每次通话,传递这是用来调用onStartSession相同的上下文对象。 注意:只要有任何已调用onStartSession而不是onEndSession的Context,会话将继续。如果一个新的Context在最后一个Context调用onEndSession的10秒内调用onStartSession,那么会话将被恢复,而不是创建一个新的会话。这可以确保在用户从应用中的一个活动转换到另一个活动时,他们不会为每个活动跟踪单独的会话,但会有跨越多个活动的单个会话。
但目前还不清楚,如果同样情况下呼叫启动10次会发生什么...