美文网首页
安卓开发 判断应用是否是前台进程

安卓开发 判断应用是否是前台进程

作者: 执念蓝枫 | 来源:发表于2018-06-15 15:11 被阅读99次

    应用场景

    当APP在前后台切换时需要对数据进行处理,此时就需要判断应用是否为前台进程。例如手势解锁功能。

    代码实现

    定义变量,用以判断程序是否是从后台进入前台的依据。

    public static boolean isActive = true;

    在onResume方法里判断isActive的值,并做相应处理。
    protected void onResume(){
          if (!isActive) {
                    //APP 从后台唤醒
                    isActive = true;
                   //做相应逻辑处理,比如展示手势验证页面   
          }
    }
    
    在onStop方法里改变isActive的值。
      protected void onStop() {
            if (!isAppOnForeground()) {
                //app 进入后台
                isActive = false;//记录当前已经进入后台
            }
    
            super.onStop();
        }
    
    isAppOnForeground方法的具体实现
    /**
         * 判断应用是否在前台
         */
        public boolean isAppOnForeground() {
            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;
        }
    

    相关文章

      网友评论

          本文标题:安卓开发 判断应用是否是前台进程

          本文链接:https://www.haomeiwen.com/subject/zihmeftx.html