2016-09-19 134 views
0

我想跟蹤用戶會話的長度(使用Mixpanel-但這個問題不是關於Mixpanel的)。 我發送一個「AppStart」事件,當用戶啓動應用程序,我啓動一個計時器。 我發送一個「AppStop」,包括用戶停止應用程序時的計時器持續時間(後退按鈕,歷史記錄,主頁按鈕,...) 我的第一個想法是使用活動生命週期回調,但我的應用程序由幾個活動,我不希望發送事件來切換這些活動。 你將如何解決這個問題?在android中跟蹤會話長度

回答

0

如果您還沒有一個已經,創建Android Application類,並使用registerActivityLifecycleCallbacks有你所有的活動onResume下面的代碼運行,另一種爲您的所有活動:

 @Override 
     public void onActivityResumed(Activity activity) { 
      if (counter == 0) { 
       sendEvent("app-start") 
      } 
      counter++; 
     } 

     @Override 
     public void onActivityPaused(Activity activity) { 
      counter--; 
      if (counter == 0) { 
       handler.postDelayed(new Runnable() { 
        public void run() { 
         if (counter == 0) { 
          sendEvent("app-stop"); 
         } 
        } 
       }, 1000); 
      } 
     } 

請參閱:https://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks)

+0

這不起作用:假設您從活動A切換到B:A暫停,然後在B重新開始後。每次切換活動時,您的代碼都會發送一個「app-start」 – stoefln

+0

這可以通過延遲app-stop事件來解決,請參閱編輯。這不是防彈的,但我們會爲99%的案例確定 – marmor

+0

您的代碼仍然無法使用。每次切換到其他活動時發送應用程序啓動。這只是邏輯 – stoefln