Android - 判断当前应用运行在前台还是后台
判断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; }