2016-09-19 91 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