所以,我正在与Flurry整合并试图找出何时拨打FlurryAgent.onEndSession(this);
。
我的应用中有四项活动。由于目前只有一个入口点/活动添加FlurryAgent.onStartSession(this, Globals.FLURRY_API_KEY);
很容易。但是停止会话的问题是应用程序可以从四个活动中的任何一个关闭。此外,每次应用更改屏幕上的活动时,都会调用onStop()
。
有关于如何决定何时结束Flurry会话的建议吗?从另一个answer获得一些建议,我可以使用BaseActivity
课程,我的四个活动中的每一个都会扩展这个,然后我会在其中放置onStart()
和onStop()
。这可以解决乱码启动/停止呼叫乱丢我的代码的问题,但不会解决何时停止的问题。
我目前的解决方案是基于上述方法并添加退出标志。如果exit标志设置为true,则基本活动将仅结束Flurry会话。
然后,在每个活动中,我将看到按下按键,例如后退按钮和主页键。如果按下了主页或后退键,我将退出设为真。
这应该有正确的效果,但我觉得它有点hacky。
iOS很不错,你只需要启动会话。将我的四个活动重构为一个并使用Fragments可能是一个好主意。你们觉得怎么样?
答案 0 :(得分:11)
您应该从的每个调用FlurryAgent.onStartSession
个方法中的onStart
,以及onEndSession
方法中的onStop
。正如您所指出的,您的应用程序有多个退出点,因为应用程序可以在任何活动中进行后台处理。但对于遵循Google指南的大多数应用,如果您的用户在后台运行后返回应用,则会返回此活动。这应该是一个新会话,但如果您只从单个入口点调用onStartSession
,则Flurry SDK将不会在此时启动新会话。如果您有三个活动,A,B,C都以这种方式调用onStartSession
和onEndSession
,并且您的用户从A导航到B导航到C,则SDK不会报告三个不同的会话,而是收集调用报告到仪表板的单个会话。如果这没有意义,请告诉我。
使用BaseActivity
将这些调用分解为抽象类是一种很好的做法,但如果使用其他子类Activity BaseListActivity
等,请确保执行相同的操作。
(免责声明:我在Flurry工作Android SDK)