·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> Android开发 >> 判断Android程序是否在前台运行的两种方法

判断Android程序是否在前台运行的两种方法

作者:佚名      Android开发编辑:admin      更新时间:2022-07-23
@Override 
protected void onStop() { 
  if (!isAppOnForeground()) { 
    Debug.i("dwy", "enter background"); 
    mIsBackground = true; 
  } else { 
    Debug.i("dwy", "foreground"); 
    mIsBackground = false; 
  } 

Judge is App in background when onStop() get called.

public boolean isAppOnForeground() { 
    // Returns a list of application processes that are running on the 
    // device 
 
    ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE); 
    String packageName = getApplicationContext().getPackageName(); 
 
    List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager 
        .getRunningAppProcesses(); 
    if (appProcesses == null) 
      return false; 
 
    for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) { 
      // The name of the process that this object is associated with. 
      if (appProcess.processName.equals(packageName) 
          && appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
        return true; 
      } 
    } 
    return false; 
  } 


方法二:

/** 
  * 需要权限:android.permission.GET_TASKS 
  * 
  * @param context 
  * @return 
  */ 
  public boolean isApplicationBroughtToBackground(Context context) { 
    ActivityManager am = (ActivityManager) context 
            .getSystemService(Context.ACTIVITY_SERVICE); 
    List<RunningTaskInfo> tasks = am.getRunningTasks(1); 
    if (tasks != null && !tasks.isEmpty()) { 
      ComponentName topActivity = tasks.get(0).topActivity; 
      Debug.i(TAG, "topActivity:" + topActivity.flattenToString()); 
      Debug.f(TAG, "topActivity:" + topActivity.flattenToString()); 
      if (!topActivity.getPackageName().equals(context.getPackageName())) { 
        return true; 
      } 
    } 
    return false; 
  }