首页 > 系统 > Android > 正文

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

2020-04-11 11:29:55
字体:
来源:转载
供稿:网友
@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;   } 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表