我有一个问题。出于分析目的,我需要跟踪APP(非活动)何时恢复。我现在遇到的问题是,如果我将跟踪器放在活动的OnResume事件上,那么每当用户在不同的活动中来回转换时它就会被触发。
我该如何避免?如何跟踪真实的“应用程序恢复”(当用户实际退出应用程序并返回时)而非活动恢复?
非常感谢任何想法。谢谢。
答案 0 :(得分:4)
我遇到了同样的问题,并通过创建基本活动解决了这个问题:
public class mActivity extends Activity{
public static final String TAG = "mActivity";
public static int activities_num = 0;
@Override
protected void onStop() {
super.onStop();
activities_num--;
if(activities_num == 0){
Log.e(TAG,"user not longer in the application");
}
}
@Override
protected void onStart() {
super.onStart();
activities_num++;
}
}
我的应用中的所有其他活动都继承了mActivity。当活动不再可见时,调用onStop。当activities_num == 0时,所有活动都不可见(意味着用户关闭应用程序或将其传递给后台)。当用户启动应用程序(或从后台重新启动它)时,将调用onStart(当活动可见时调用onStart)和activities_num>希望它有所帮助...
答案 1 :(得分:2)
使用应用的应用对象(请参阅http://developer.android.com/reference/android/app/Application.html)。如果您创建自定义Application类并在AndroidManifest.xml文件中对其进行配置,则可以执行以下操作:
onCreate()
中开始跟踪。onPause()
和onResume()
方法检查Application对象,看看它们是否是第一个要运行的Activity,或者它们是否继续以前运行的应用程序实例。 onDestroy()
。在某种程度上,大多数分析软件包(Flurry和他们的同类)都做了类似的事情。你需要做一点状态机工作才能使它正常工作,但它不应该太复杂。
答案 2 :(得分:0)
而不是OnResume(),挂钩到主活动的OnCreate()事件。