与调度Android的问题()谷歌Analytics(分析)

问题描述:

在使用谷歌分析为Android,如果我使用与调度Android的问题()谷歌Analytics(分析)

tracker.start("UA-YOUR-ACCOUNT-HERE", 20, this)

然后每20秒,事件将被自动分派即使我不它使用手动

tracker.dispatch() 

我的问题是,如果用户在20秒内退出我的应用程序会发生什么? 它会被派遣?

或者我是否必须在用户试图退出时手动调度所有未决事件?

+0

进行任何的答案是否足够?如果是这样,请标记为已接受:) – 2011-11-29 00:13:34

tracker.stop()不派遣数据。我的建议是也把tracker.dispatch()中的onDestroy()方法

@Override 
    protected void onDestroy() { 
    super.onDestroy(); 
    tracker.dispatch(); 
    // Stop the tracker when it is no longer needed. 
    tracker.stop(); 
    } 

来源: http://www.google.com/support/forum/p/Google%20Analytics/thread?tid=70a919f5b097f5dc&hl=en

+2

这真的是最好的方法吗?在用户离开时执行操作,但在后台执行操作?对我来说,停止呼叫属于那里,而不是派遣呼叫似乎更符合逻辑。 – olamotte 2011-05-20 16:05:11

建议您在使用以下方式销毁应用程序时停止跟踪器;

@Override 
    protected void onDestroy() { 
    super.onDestroy(); 
    // Stop the tracker when it is no longer needed. 
    tracker.stop(); 
    } 

我会认为这会派遣任何等待事件。

你不必做任何东西 - 事件得到保存,将被集中在一起与您的应用程序中发生的下一次调度(大概是下次用户启动应用程序时)。

请注意,Analytics服务器根据收到数据的时间来标记点击时间,而不是基于事件实际发生的时间 - 所以如果您的用户每天使用该应用几分钟,则第10点发生的访问可能会显示起来分析11号等

更新: 要在行为时澄清tracker.stop()被调用,它调度挂起的事件在这一点上。他们留在一个内部的sqlite数据库中,并且是在应用程序的下一次运行中调用调度时第一个出去。当跟踪器停止时,他们没有被解雇的原因是它会给被销毁的Activity增加时间,使得应用程序在退出时感觉不太“活泼”。这也是在派发onDestroy方法之前应该仔细考虑的原因。

此代码可以帮助您.....

public class TestActivity extends Activity { 

    GoogleAnalyticsTracker tracker; 


     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     tracker = GoogleAnalyticsTracker.getInstance(); 

     // Start the tracker in manual dispatch mode... 
     tracker.startNewSession("UA-33332745-1", this); 

     setContentView(R.layout.main); 
     Button createEventButton = (Button)findViewById(R.id.NewEventButton); 
     createEventButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
      tracker.trackEvent( 
       "Clicks", // Category 
       "Button", // Action 
       "clicked", // Label 
       77);  // Value 
      } 
     }); 

     Button createPageButton = (Button)findViewById(R.id.NewPageButton); 
     createPageButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) {   
      // Add a Custom Variable to this pageview, with name of "Medium" and value "MobileApp" 
      tracker.setCustomVar(1, "Medium", "Mobile App");   
      tracker.trackPageView("/testApplicationHomeScreen"); 
      } 
     }); 

     Button quitButton = (Button)findViewById(R.id.QuitButton); 
     quitButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
      finish(); 
      } 
     }); 

     Button dispatchButton = (Button)findViewById(R.id.DispatchButton); 
     dispatchButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
      tracker.dispatch(); 
      } 
     }); 
     } 


     protected void onDestroy() { 
     super.onDestroy(); 
     // Stop the tracker when it is no longer needed. 
     tracker.stopSession(); 
     } 
    }