2016-09-19 11 views
0

私はユーザーセッションの長さを追跡しようとしています(Mixpanel-ではこの質問はMixpanelに関するものではありません)。 ユーザーがアプリを起動してタイマーを開始すると、「AppStart」イベントが送信されます。 ユーザーがアプリケーションを停止したときに、タイマーの継続時間を含む「AppStop」を送信しています(戻るボタン、履歴、ホームボタンなど) 私の最初の考えはアクティビティライフサイクルコールバックを使用することでしたが、私はそれらを切り替えるためのイベントを送信したくありません。 どうすればその問題を解決できますか?androidのセッション長を追跡する

答えて

0

まだお持ちでない場合は、AndroidのApplicationクラスを作成し、すべてのあなたの活動onResume次のコードの実行を持っているregisterActivityLifecycleCallbacksを使用し、すべてのあなたの活動のための別の1:

 @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-stopイベントを少し遅らせて解決できます。編集を参照してください。弾丸ではありませんが、ケースの99%でOKです – marmor

+0

あなたのコードはまだ動作しません。他のアクティビティに切り替えるたびにapp-startを送信します。どちらが論理的なのですか – stoefln

関連する問題