1

所以,我正在与 Flurry 集成并试图找出何时调用FlurryAgent.onEndSession(this);.

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

有关于如何决定何时结束 Flurry 会话的建议吗?从另一个答案中获得一些建议,我可以使用一个类,我的四个活动中的每一个都会扩展它,然后BaseActivity我会放置在那里。这将解决使用 Flurry 开始/停止调用乱扔我的代码的问题,但不能解决何时停止的问题。onStart()onStop()

我目前的解决方案是在上述方法的基础上添加退出标志。仅当退出标志设置为 true 时,基本活动才会结束 Flurry 会话。

然后,在每个活动中,我将查看诸如返回按钮和主页键之类的按键。如果按下 home 或 back 键,我会将 exit 设置为 true。

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

iOS 很好,你只需要开始会话。将我的四个活动重构为一个并使用片段可能是一个好主意。你们有什么感想?

4

1 回答 1

11

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

使用 aBaseActivity将这些调用分解为抽象类是一种很好的做法,但如果您使用 Activity 的其他子类,请确保这样做 -BaseListActivity等等。

(免责声明:我在 Flurry 开发 Android SDK)

于 2013-02-09T15:22:07.847 回答