判斷app是否後臺執行,判斷activity是否已經開啟,是否點中home鍵
阿新 • • 發佈:2019-02-18
/**
* 判斷當前activity是否已經開啟 * @param PackageName * @param context * @return */ public boolean isForeground(String PackageName,Context context){ // Get the Activity Manager ActivityManager manager = (ActivityManager)context.getSystemService(context.ACTIVITY_SERVICE); // Get a list of running tasks, we are only interested in the last one,// the top most so we give a 1 as parameter so we only get the topmost. List< ActivityManager.RunningTaskInfo > task = manager.getRunningTasks(1); // Get the info we need for comparison. ComponentName componentInfo = task.get(0).baseActivity; Log.e("<<<<<<<<<<","---------------"+componentInfo.getClassName()); // Check if it matches our package name. if(componentInfo.getClassName().equals(PackageName)) return true; // If not then our app is not on the foreground. return false; }
/** * 判斷整個app專案是否在使用者操作介面 * */ public void appIsRunning(){ ActivityManager am = (ActivityManager)getContext().getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> appProcesses = am.getRunningAppProcesses(); String MY_PKG_NAME =getContext().getPackageName(); for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) { if (appProcess.processName.equals(MY_PKG_NAME)) { if (appProcess.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { Log.e("hhhh-->", "處於後臺" + appProcess.processName); } else { Log.e("hhhh-->", "處於前臺" + appProcess.processName); } } } }