我正在尝试使用website of the respective SDK上的信息将Google Analytics集成到我的Android项目中。但是,几乎没有可用的文档。我的项目有6个不同的活动,我注意到,使用网站上的方法可以在Google Analytics中为每个正在打开的活动进行访问,即使它仍然在同一个会话中。显然,Google Analytics for Android从不重复使用之前使用过的会话。
他们的方法是开始跟踪onCreate中的活动,然后在onDestroy中停止跟踪。我遇到的问题是,如果用户按下主页按钮而不是后退按钮,会话将保持活动状态,因为活动不会被销毁。因此我选择在onResume和onPause中执行此操作,但这意味着在打开新活动时会打开新会话。
有没有人知道如何在多个活动中真正跟踪单个会话?
答案 0 :(得分:3)
在研究了一个活动的生命周期之后,我得出了以下结论。
当从活动A切换到另一个活动B时,A的onStop方法在B的onStart方法之后被调用。然后我做的是每次在onStart方法中访问(静态)跟踪器时增加一个引用计数器。在onStop方法中,我首先检查引用计数器是否为0,如果是,则停止跟踪器。在onStop方法结束时,我会减少参考计数器。
此时这似乎工作得很好,并且当应用程序有多个可以充当入口点的活动时也应该有效。
答案 1 :(得分:2)
重复我在这里发布的答案: Google Analytics in Android app - dealing with multiple activities
我使用的方法是使用绑定服务(我恰好使用了一个绑定服务,因此可以节省额外的锅炉板代码的创建。)
绑定服务只会在绑定了活动时才会持续。我的应用程序中的所有活动都绑定到此服务,因此只要用户正在使用我的应用程序,它就会持续 - 因此非常真实的“会话”。
我使用Application的单例实例启动跟踪器,我已经扩展并添加了一个静态getInstance()方法来检索实例:
// Non-relevant code removed
public IBinder onBind(Intent intent) {
tracker = GoogleAnalyticsTracker.getInstance();
tracker.startNewSession(PROPERTY_ID, MyApp.getInstance());
}
public boolean onUnbind(Intent intent) {
tracker.stopSession();
}
请参阅:http://developer.android.com/guide/topics/fundamentals/bound-services.html