【问题标题】:Android - How to track app Resumes only when you exit and come back to the app?Android - 如何仅在您退出并返回应用程序时跟踪应用程序恢复?
【发布时间】:2011-05-05 01:14:11
【问题描述】:

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

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

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

【问题讨论】:

    标签: android android-activity onresume


    【解决方案1】:

    我遇到了同样的问题并通过创建基础活动解决了它:

    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。希望对您有所帮助...

    【讨论】:

    • 这是正确的方式...您的“事件”发生在activity_num == 0(背景)或activity_num == 1(前景)时。
    【解决方案2】:

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

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

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

    【讨论】:

    • 我一直在思考这个答案。我不太清楚我会为第 2 步做什么。愿意为我详细说明吗?我想做同样的事情,但找不到正确的逻辑来知道我正在返回应用程序。
    【解决方案3】:

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

    【讨论】:

    • 我看到的问题是,假设我们有活动 A、B 和 C。它们可以在彼此之间来回跳转。每次调用其中一个时, OnResume() 总是会被解雇。用户可能会在活动 B 或 C 上离开应用程序,进行一些浏览,然后在活动 B 或 C 上返回应用程序
    • 这在用户恢复应用时不起作用,因为不会调用当前活动的 onCreate()。
    猜你喜欢
    • 1970-01-01
    • 2017-11-02
    • 2016-03-11
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    相关资源
    最近更新 更多