天天看點

Android判斷應用是否運作以及是否在背景-憶痕惜dxh

我可以走一千步去喜歡你,也可以退一千零一步離開你

場景分析:

在開發中,有時候我們會需要判斷應用是否在前台運作,然後才做什麼操作;當應用切換到背景時,才做什麼操作。這時候我們需要判斷應用在前台還是背景運作的情況

/** 判斷程式是否在背景運作 */
public static boolean isRunBackground(Context context) {
  ActivityManager activityManager = (ActivityManager) context
      .getSystemService(Context.ACTIVITY_SERVICE);
  List<RunningAppProcessInfo> appProcesses = activityManager
      .getRunningAppProcesses();
  for (RunningAppProcessInfo appProcess : appProcesses) {
    if (appProcess.processName.equals(context.getPackageName())) {
      if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
        // 表明程式在背景運作
        return true;
      } else {
        return false;
      }
    }
  }
  return false;
}
/** 判斷程式是否在前台運作(目前運作的程式) */
public boolean isRunForeground() {
  ActivityManager activityManager = (ActivityManager) getApplicationContext()
      .getSystemService(Context.ACTIVITY_SERVICE);
  String packageName = getApplicationContext().getPackageName();
  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;
}