7

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

我怎样才能避免这种情况?如何跟踪真正的“应用程序恢复”(当用户实际退出应用程序并返回时)而不是活动恢复?

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

4

3 回答 3

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。当activity_num == 0 时,所有活动都不可见(意味着用户关闭应用程序或将其传递到后台)。当用户启动应用程序(或从后台重新启动它)时,将调用 onStart(当活动可见时调用 onStart)并且 activity_num > 0。希望对您有所帮助...

于 2013-05-18T19:16:05.467 回答
2

使用应用程序的 Application 对象(请参阅http://developer.android.com/reference/android/app/Application.html)。如果您创建一个自定义应用程序类并在您的 AndroidManifest.xml 文件中配置它,您可以执行以下操作:

  1. onCreate()在 Application 对象中开始跟踪。
  2. 检测您的所有活动,以便它们onPause()onResume()方法检查应用程序对象并查看它们是否是第一个运行的活动,或者它们是否继续之前运行的应用程序实例。
  3. onDestroy()在 Application 对象中停止跟踪。

在某种程度上,大多数分析包(Flurry 及其同类)都在做类似的事情。你需要做一些状态机工作才能让它正常工作,但它不应该太复杂。

于 2011-05-05T04:06:35.120 回答
0

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

于 2011-05-05T01:37:11.930 回答