每個Activity
都要求onSessionStart(context, apikey);
和onSessionEnd(context);
,這樣可以跟蹤整個活動中的會話。即使是碎片可以做同樣的,但是當一個服務參與(你認爲你會沒有結束,而服務是做的東西),在以下情況下會發生什麼:將Flurry for Android餘額開始/結束會話調用?
- 活動在onStart() - >亂舞啓動(活動上下文)
- 服務的onCreate - > Service.SomeActionIsHappening() - >亂舞啓動(服務上下文)
- 活動的onStop() - >亂舞停止(活動上下文)
- 服務仍在運行 - >調用Service.SomeOtherAction() - > Flurry Start(Service Context)
- Servic e Ends - > Flurry Stop(服務上下文)。
所以平衡一直(排名不分先後):
- 活動開始。
- 活動結束。
這很好。活動開始/結束計數被平衡爲0.
- 服務開始。
- 服務開始。
- 服務結束。
現在,您需要撥打結束第四次來平衡呼叫嗎? (請記住,上下文是相同的,服務被稱爲啓動兩次,但它的呼叫結束一次)。
對於Flurry而言,只要來自同一個上下文的最後一次調用是onEndSession,它是否足以(並且有效)接收N個開始和一個(或多個)結束?
Flurry是否保留引用計數(很像可可)或只是一個上下文列表?
我還沒有看到關於這個特定場景的文檔。所有的文件說是這樣的:(重點煤礦)
確保呼叫匹配到onEndSession 爲onStartSession的每次通話,傳遞這是用來調用onStartSession相同的上下文對象。 注意:只要有任何已調用onStartSession而不是onEndSession的Context,會話將繼續。如果一個新的Context在最後一個Context調用onEndSession的10秒內調用onStartSession,那麼會話將被恢復,而不是創建一個新的會話。這可以確保在用戶從應用中的一個活動轉換到另一個活動時,他們不會爲每個活動跟蹤單獨的會話,但會有跨越多個活動的單個會話。
但目前還不清楚,如果同樣情況下呼叫啓動10次會發生什麼...