我想在我的Android应用程序中集成flurry分析,看起来非常简单。但我不熟悉乱舞及其运作方式。
我应该添加代码:
public void onStart()
{
super.onStart();
FlurryAgent.onStartSession(sample, “APIXXXXXXXXXXXX”);
}
在每项活动中?
我的应用程序使用了很多活动,我并不真正关心跟踪使用哪些活动,只关注安装次数,会话次数和会话长度。但是,如果仅在启动活动中添加了flurry代码,那么会话长度是否可用?
我知道我想要的大部分信息已经在Play商店中提供,但我想尝试这一点来概述不同平台上的应用程序。
答案 0 :(得分:16)
这是一个很好的答案:https://stackoverflow.com/a/8062568/1635817
我建议你创建一个“BaseActivity”并告诉你所有活动扩展它,这样你就不必在每个活动类中复制/粘贴这些行。
这样的事情:
public class BaseActivity extends Activity
{
public void onStart()
{
super.onStart();
FlurryAgent.onStartSession(this, "YOUR_KEY");
// your code
}
public void onStop()
{
super.onStop();
FlurryAgent.onEndSession(this);
// your code
}
}
回应@conor评论:
只要有任何已调用的Context onStartSession(Context,String)但不是onEndSession(Context),. 会议将继续进行。此外,如果新的上下文调用 onStartSession(Context,String)在10秒内(默认会话 最后一次调用onEndSession的Context,然后是 将恢复会话,而不是创建新会话。 会话长度,使用频率,事件和错误将继续存在 跟踪作为同一会话的一部分。这确保了作为用户 在应用程序中从一个Activity转换到另一个Activity 没有为每个活动跟踪单独的会话,但会有一个 单个会话,涵盖许多活动。
答案 1 :(得分:4)
来自florianmski的回答很有意义,但是当您必须在应用程序中使用不同类型的活动时会出现一些问题,例如FragmentActivity,TabActivity,ListActivity等。在这种情况下,您无法从单个BaseActivity扩展所有活动。我个人更喜欢在每个活动的onStart和onStop方法中调用onStartSession和onEndSession,但在将它们包装到某个类之前,例如:
public class Analytics {
public static void startSession(Context context) {
FlurryAgent.onStartSession(context, Config.FLURRY_KEY);
// here could be some other analytics calls (google analytics, etc)
}
public static void stopSession(Context context) {
FlurryAgent.onEndSession(context);
// other analytics calls
}
}
在每项活动中:
public void onStart() {
super.onStart();
Analytics.startSession(this);
}
public void onStop() {
super.onStop()
Analytics.stopSession(this);
}