我试图在我的应用程序中使用Flurry Analitcs。
在阅读了sdk文档之后,我在应用程序的每个活动中执行了以下代码:
@Override
protected void onStart() {
FlurryAgent.onStartSession(this, "xxxxxxxxxxxxxxxxx");
super.onStart();
}
@Override
public void onStop() {
super.onStop();
FlurryAgent.onEndSession(this);
}
我怀疑我的应用程序中有很多异步任务和一些intentservice,在文档中他们说:
插入对flurrygent.onStartSession(context,string)的调用,并将引用传递给它
到上下文对象(如活动或服务)
那么,我应该在onhandleIntent方法中调用onStartSession吗?我应该去哪里拜访OnedSession?在最后一个过程和最后一个街区?
关于异步任务,即使我通过任务传递活动上下文,我也应该实现它吗?
最佳答案
flurrygent作为应用程序中的单实例实体存在。无论何时调用onStartSession()都会开始一个新会话,调用onEndSession()将结束当前活动的会话。这与调用flurrygent的线程无关。
如何在应用程序中定义会话在很大程度上取决于您。对于大多数应用程序,会话被定义为用户与应用程序交互的时间段。这就是为什么文档建议在活动生命周期函数中调用onStartSession()和onEndSession(),以便会话包含所有用户交互。
如果在显示活动时正在执行异步任务,则无需再次调用onStartSession(),因为它已从封闭活动中跟踪。如果有独立于活动运行的后台服务,则何时调用onStartSession()取决于您。
注意,如果您有一个可以独立运行的服务,那么应该定期调用onendSession(),以便报告数据,因为只有在会话启动和结束时才会报告数据。