乱舞 - stopSession和多个活动

时间:2013-02-08 17:04:31

标签: flurry

所以,我正在与Flurry整合并试图找出何时拨打FlurryAgent.onEndSession(this);

我的应用中有四项活动。由于目前只有一个入口点/活动添加FlurryAgent.onStartSession(this, Globals.FLURRY_API_KEY);很容易。但是停止会话的问题是应用程序可以从四个活动中的任何一个关闭。此外,每次应用更改屏幕上的活动时,都会调用onStop()

有关于如何决定何时结束Flurry会话的建议吗?从另一个answer获得一些建议,我可以使用BaseActivity课程,我的四个活动中的每一个都会扩展这个,然后我会在其中放置onStart()onStop()。这可以解决乱码启动/停止呼叫乱丢我的代码的问题,但不会解决何时停止的问题。

我目前的解决方案是基于上述方法并添加退出标志。如果exit标志设置为true,则基本活动将仅结束Flurry会话。

然后,在每个活动中,我将看到按下按键,例如后退按钮和主页键。如果按下了主页或后退键,我将退出设为真。

这应该有正确的效果,但我觉得它有点hacky。

iOS很不错,你只需要启动会话。将我的四个活动重构为一个并使用Fragments可能是一个好主意。你们觉得怎么样?

1 个答案:

答案 0 :(得分:11)

您应该从的每个调用FlurryAgent.onStartSession个方法中的onStart,以及onEndSession方法中的onStop。正如您所指出的,您的应用程序有多个退出点,因为应用程序可以在任何活动中进行后台处理。但对于遵循Google指南的大多数应用,如果您的用户在后台运行后返回应用,则会返回此活动。这应该是一个新会话,但如果您只从单个入口点调用onStartSession,则Flurry SDK将不会在此时启动新会话。如果您有三个活动,A,B,C都以这种方式调用onStartSessiononEndSession,并且您的用户从A导航到B导航到C,则SDK不会报告三个不同的会话,而是收集调用报告到仪表板的单个会话。如果这没有意义,请告诉我。

使用BaseActivity将这些调用分解为抽象类是一种很好的做法,但如果使用其他子类Activity BaseListActivity等,请确保执行相同的操作。

(免责声明:我在Flurry工作Android SDK)