判断android当前运行在前台还是后台,有两种解决方案:
第一种:当app1打开显示在最上面页面时返回true, 但是当app1打开运行在后台,app打开运行在最上面页面时也返回true。
private boolean isTopActivity() {
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
BreezeLog.d(TAG,"pkg:"+cn.getPackageName());
BreezeLog.d(TAG, "cls:"+cn.getClassName());
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
if (taskInfo.size() > 0) {
if (PACKAGE_NAME.equals(taskInfo.get(0).topActivity.getPackageName())) {
return true;
}
}
return false;
}
第二种:当app1打开显示在最上面页面时返回true, 但是当app1打开运行在后台,app打开运行在最上面页面时返回false。
private boolean isTopActivity() {
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> appProcesses = am.getRunningAppProcesses();
if (appProcesses == null) {
return false;
}
for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.processName.equals(PACKAGE_NAME) && appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
return true;
}
}
return false;
}