4

我正在尝试在我的应用程序中使用Flurry Analitcs。阅读 sdk 文档后,我在应用程序的每个活动中执行了以下代码:

@Override
protected void onStart() {
    FlurryAgent.onStartSession(this, "xxxxxxxxxxxxxxxxx");
    super.onStart();
}

@Override
public void onStop() {
    super.onStop();
    FlurryAgent.onEndSession(this);
}

我的疑问是我的应用程序中有许多 AsyncTask 和一些 IntentServices,并且在他们说的文档中:

插入对 FlurryAgent.onStartSession(Context, String) 的调用,将引用传递给 Context 对象(例如 Activity 或 Service)

那么,我应该在 onHandleIntent 方法中调用 onStartSession 吗?我应该在哪里调用 onEndSession?在最终过程和最终块中?关于 AsyncTasks,即使我通过我的任务传递我的活动上下文,我是否也应该实现它?

4

1 回答 1

4

FlurryAgent 作为应用程序中的单例实体存在。无论何时调用 onStartSession() 都会开始一个新会话,调用 onEndSession() 将结束当前活动的会话。这与您调用 FlurryAgent 的线程无关。

如何在应用程序中定义会话很大程度上取决于您。对于大多数应用程序,会话定义为用户与应用程序交互的时间段。这就是为什么文档建议在 Activity 生命周期函数中调用 onStartSession() 和 onEndSession() 以便会话包含所有用户交互。

如果在显示 Activity 时正在执行 AsyncTask,则无需再次调用 onStartSession(),因为它已经从封闭的 Activity 中被跟踪。如果您有一个独立于活动运行的后台服务,则何时调用 onStartSession() 取决于您。

请注意,如果您有一个可以无限运行的服务,您应该定期调用 onEndSession() 以便报告数据,因为只有在会话开始和结束时才会报告数据。

于 2013-07-01T18:22:11.897 回答