2016-09-19 2 views
0

사용자 세션의 길이를 추적하려고합니다 (Mixpanel과 함께 -하지만이 질문은 Mixpanel에 관한 것이 아닙니다). 사용자가 앱을 실행하고 타이머를 시작하면 "AppStart"이벤트가 전송됩니다. 사용자가 앱을 중지 할 때 타이머 지속 시간을 포함하여 "AppStop"을 전송합니다 (뒤로 버튼, 기록, 홈 버튼 등) 내 첫 번째 생각은 활동 라이프 사이클 콜백을 사용하는 것이지만 내 앱은 여러 활동들 사이에서 전환을위한 이벤트를 보내고 싶지 않습니다. 어떻게 그 문제를 해결하겠습니까?안드로이드에서 추적 세션 길이

답변

0

아직 계정이없는 경우, 안드로이드 Application 클래스를 생성하고, 모든 활동 onResume에 대한 다음 코드를 실행하도록 registerActivityLifecycleCallbacks를 사용하고, 모든 활동 onPause 또 다른 하나

 @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가 재개 된 후에 발생합니다. – stoefln

+0

전환 할 때마다 코드가 "app-start"를 보내면 app-stop 이벤트가 약간 지연됩니다 (편집 참조). 방탄은 아니지만, 케이스의 99 %는 괜찮습니다. – marmor

+0

코드가 여전히 작동하지 않습니다. 다른 활동으로 전환 할 때마다 앱 시작을 보냅니다. 어느 것이 논리적입니까 – stoefln

관련 문제