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

2018-06-15  本文已影响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;
    }
上一篇下一篇

猜你喜欢

热点阅读