我试图确定我的应用程序在用户关闭它后何时恢复,以任何方式按下主页按钮、后退按钮或切换到另一个应用程序。
我需要做的是在应用程序进入后台时设置一个布尔值,所以,当它恢复时,我知道它之前在后台,我可以采取相应的行动。
我尝试在活动中使用 onResume 和 onPause 方法来了解应用程序何时进入后台,然后恢复,但由于一次只能有一个活动,我没有成功。当一个活动暂停时,这并不意味着应用程序进入了后台,因为可能已经启动了另一个活动,但该活动的 onResume 事件只会在前一个活动暂停后触发。
我也尝试在前台列出所有应用程序,但没有成功,如果我将我的应用程序放在后台恢复另一个应用程序,我的应用程序总是在前台。
我读到自 Android 4 以来,有一种新方法可以知道应用程序何时处于前台,但我的应用程序也需要与 Android 3.0 设备兼容。
这是我尝试在每个活动中放入的代码(MyApp 是我的应用程序名称):
@Override
protected void onResume() {
super.onResume();
MyApp.isPaused = false;
}
@Override
protected void onPause() {
super.onPause();
MyApp.isPaused = true;
}
这也是我在前台列出所有应用程序的尝试:
ActivityManager activityManager = (ActivityManager)((Activity) currentContext).getSystemService( ACTIVITY_SERVICE );
List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
for(RunningAppProcessInfo appProcess : appProcesses){
if(appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
if(appProcess.processName.equals("com.xxx.myapp")) {
Log.i("MyApp", "it's in foreground");
}
Log.i("MyApp", appProcess.processName);
}
}