Android 检测应用程序何时从后台返回
我想知道我的应用程序何时从后台恢复。onResume()不是一个好的解决方案,因为我在主活动之外还有另一个活动,所以它可以从后台返回到每个活动。其目的是使用Android 检测应用程序何时从后台返回,android,background,google-analytics,Android,Background,Google Analytics,我想知道我的应用程序何时从后台恢复。onResume()不是一个好的解决方案,因为我在主活动之外还有另一个活动,所以它可以从后台返回到每个活动。其目的是使用谷歌分析,了解用户何时启动应用程序,并将其从后台带回 非常感谢大家。您可以使用ActivityManager.GetRunningAppProcesss()检测后台应用程序,该程序返回RunningAppProcessInfo记录列表。如果您的应用程序位于后台检查RunningAppProcessInfo.importance字段等于Runn
谷歌分析
,了解用户何时启动应用程序,并将其从后台带回
非常感谢大家。您可以使用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()时调用它(例如在活动之间移动)?在这种情况下,我将获得使用该应用程序的错误数据。是的,它会,但读取我在“复制”中链接的线程。没有多大帮助,即使有标记,它也会导致问题,但无论如何感谢您的时间。