Flurry应该用在Services和AsyncTasks中吗?

时间:2013-05-07 17:28:25

标签: android flurry

我正在尝试在我的应用中使用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,即使我通过我的任务传递活动上下文,我也应该实现它吗?

1 个答案:

答案 0 :(得分:4)

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

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

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

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