判斷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; }