Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检测应用程序何时从后台返回_Android_Background_Google Analytics - Fatal编程技术网

Android 检测应用程序何时从后台返回

Android 检测应用程序何时从后台返回,android,background,google-analytics,Android,Background,Google Analytics,我想知道我的应用程序何时从后台恢复。onResume()不是一个好的解决方案,因为我在主活动之外还有另一个活动,所以它可以从后台返回到每个活动。其目的是使用谷歌分析,了解用户何时启动应用程序,并将其从后台带回 非常感谢大家。您可以使用ActivityManager.GetRunningAppProcesss()检测后台应用程序,该程序返回RunningAppProcessInfo记录列表。如果您的应用程序位于后台检查RunningAppProcessInfo.importance字段等于Runn

我想知道我的应用程序何时从后台恢复。onResume()不是一个好的解决方案,因为我在主活动之外还有另一个活动,所以它可以从后台返回到每个活动。其目的是使用
谷歌分析
,了解用户何时启动应用程序,并将其从后台带回


非常感谢大家。

您可以使用ActivityManager.GetRunningAppProcesss()检测后台应用程序,该程序返回RunningAppProcessInfo记录列表。如果您的应用程序位于后台检查RunningAppProcessInfo.importance字段等于RunningAppProcessInfo.importance\u background,而RunningAppProcessInfo.processName等于您的应用程序包名称

更多信息:


创建扩展
活动的公共基类。使用所需的功能实现
onResume()
。然后从这个基类扩展所有其他活动

基类中的
onResume()
应该调用
super.onResume()
,这也应该是每个活动
onResume
方法的第一行

基类

public class BaseActivity extends Activity

@Override
public void onResume(){
    super.onResume();
    // code to do your analytics stuff
}
public class MainActivity extends BaseActivity

@Override
public void onResume(){
    super.onResume();
    // code for the individual activity
}
衍生活动

public class BaseActivity extends Activity

@Override
public void onResume(){
    super.onResume();
    // code to do your analytics stuff
}
public class MainActivity extends BaseActivity

@Override
public void onResume(){
    super.onResume();
    // code for the individual activity
}

android.arch.lifecycle软件包提供了一个界面,让您知道应用程序何时从后台返回

应用程序应实现LifecycleObserver接口:

public class MyApplication extends Application implements LifecycleObserver {

    @Override
    public void onCreate() {
        super.onCreate();
        ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    private void onAppBackgrounded() {
        Log.d("MyApp", "App in background");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    private void onAppForegrounded() {
        Log.d("MyApp", "App in foreground");
    }
}
为此,您需要将此依赖项添加到build.gradle文件:

dependencies {
    implementation "android.arch.lifecycle:extensions:1.1.1"
}
按照Google的建议,您应该尽量减少在活动的生命周期方法中执行的代码:

一种常见的模式是实现依赖项的操作 活动和片段的生命周期方法中的组件。 但是,这种模式会导致代码组织不当,并导致 错误的扩散。通过使用生命周期感知组件,您可以 可以将依赖组件的代码移出生命周期方法 并将其转换为组件本身

您可以在此处阅读更多内容:

的可能重复项,但是否会在每次这些活动调用onResume()时调用它(例如在活动之间移动)?在这种情况下,我将获得使用该应用程序的错误数据。是的,它会,但读取我在“复制”中链接的线程。没有多大帮助,即使有标记,它也会导致问题,但无论如何感谢您的时间。