2013-05-07 71 views
4

我想在我的應用程序使用Flurry Analitcs。 閱讀SDK文檔我沒有從我的應用程序的每個活動下面的代碼後:Flurry應該用在Services和AsyncTasks中?

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

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

我的疑問是,我有很多的AsyncTask,並在我的應用程序的一些IntentServices,並在文件中,他們說:

插入到FlurryAgent.onStartSession(上下文,字符串)的呼叫時,它傳遞一個參考 到上下文對象(例如,活動或服務)

所以,我應該調用調用onStart在onHandleIntent方法中的會話?我應該在哪裏打電話onEndSession?在最後的過程和最後的塊? 而關於AsyncTasks,我要實現它太,即使我通過我的活動範圍內,通過我的任務是什麼?

回答

4

的FlurryAgent存在爲您的應用程序內的單實體。每當你調用onStartSession()你開始一個新的會話,並調用onEndSession()將結束當前活動的會話。這與您調用FlurryAgent的線程無關。

你怎麼想在你的應用程序定義會話,很大程度上取決於你。對於大多數應用程序,會話定義爲用戶與應用程序交互的時間段。這就是爲什麼文檔建議在Activity生命週期函數中調用onStartSession()和onEndSession(),以便會話將包含所有用戶交互。

如果當正在顯示一個活動就沒有必要調用onStartSession()再次,因爲它會已經從封閉的活動進行跟蹤正在執行的AsyncTask。如果您有一個獨立於活動運行的後臺服務,則需要在調用onStartSession()時由您決定。

需要注意的是,如果你有這樣的數據報道稱,定期運行indenfinitely你應該叫onEndSession(),因爲當會話開始和結束時的數據只報告服務。