Android App开发中,有时需要判断应用是否处于当前活动状态,下面提到两个方法,都是从ActivityManager获得相关信息。
方法之一:
public boolean isAppOnForeground(String packageName) { ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); if (activityManager == null) { return false; } List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); if (appProcesses == null) { return false; } for (RunningAppProcessInfo appProcess : appProcesses) { if (appProcess.processName.equals(packageName) && appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { return true; } } return false; }
方法之二:
public boolean isAppOnForeground(String packageName) { ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); if (activityManager == null) { return false; } ComponentName componentName = activityManager.getRunningTasks(1).get(0).topActivity; if (componentName.getPackageName().equals(packageName)) { return true; } return false; }
最后一定要添加权限 :
<uses-permission android:name="android.permission.GET_TASKS"/>
比较:
- 两个方法都可以完成指定要求,但是方法二需要添加权限,而方法一不需要。