Android - 如何跟踪应用程序仅在退出并返回应用程序时恢复?

时间:2011-05-05 01:14:12

标签: android android-activity onresume

我有一个问题。出于分析目的,我需要跟踪APP(非活动)何时恢复。我现在遇到的问题是,如果我将跟踪器放在活动的OnResume事件上,那么每当用户在不同的活动中来回转换时它就会被触发。

我该如何避免?如何跟踪真实的“应用程序恢复”(当用户实际退出应用程序并返回时)而非活动恢复?

非常感谢任何想法。谢谢。

3 个答案:

答案 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文件中对其进行配置,则可以执行以下操作:

  1. 在Application对象的onCreate()中开始跟踪。
  2. 检测所有活动,以便他们的onPause()onResume()方法检查Application对象,看看它们是否是第一个要运行的Activity,或者它们是否继续以前运行的应用程序实例。
  3. 停止跟踪Application对象的onDestroy()
  4. 在某种程度上,大多数分析软件包(Flurry和他们的同类)都做了类似的事情。你需要做一点状态机工作才能使它正常工作,但它不应该太复杂。

答案 2 :(得分:0)

而不是OnResume(),挂钩到主活动的OnCreate()事件。