首页 > 技术文章 > Android判断程序是前台还是后台

fruitbolgs 2015-09-09 21:06 原文

  1. /**
    * 程序是否在前台运行
    *
    * @return
    */
    public boolean isAppOnForeground(){
       // Returns a list of application processes that are running on the
       // device
       List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
       if(appProcesses ==null)
          returnfalse;
       for(RunningAppProcessInfo appProcess : appProcesses){
          // The name of the process that this object is associated with.
          if(appProcess.processName.equals(packageName)
             /**
             * 可以根据importance的不同来判断前台或后台 RunningAppProcessInfo
             * 里面的常量IMOPORTANCE就是上面所说的前台后台
             * ,其实IMOPORTANCE是表示这个app进程的重要性,因为系统回收时候,会
             * public static final int IMPORTANCE_EMPTY = 500//空进程
             * public static final intIMPORTANCE_FOREGROUND = 100//在屏幕最前端、可获取到焦点
             * 可理解为Activity生命周期的OnResume();
             * public static final int IMPORTANCE_SERVICE = 300//在服务中
             * public static final int IMPORTANCE_VISIBLE = 200//在屏幕前端、获取不到焦点可理解为
             * Activity生命周期的OnStart()
             */
           && appProcess.importance ==RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
            return true;
         }
      }
      return false;
    }
    我的方法是放在BaseActivity,在onStart和onStop里面分别再判断一次。根据返回值来判断是前台还是后台。

     

 

推荐阅读