Android - 判断当前应用运行在前台还是后台

判断android当前运行在前台还是后台,有两种解决方案:

第一种:当app1打开显示在最上面页面时返回true, 但是当app1打开运行在后台,app打开运行在最上面页面时也返回true。

    private boolean isTopActivity() {
        ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
        ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
        BreezeLog.d(TAG,"pkg:"+cn.getPackageName());
        BreezeLog.d(TAG, "cls:"+cn.getClassName());
        List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
        if (taskInfo.size() > 0) {
            if (PACKAGE_NAME.equals(taskInfo.get(0).topActivity.getPackageName())) {
                return true;
            }
        }
       return false;
    }

第二种:当app1打开显示在最上面页面时返回true, 但是当app1打开运行在后台,app打开运行在最上面页面时返回false。

    private boolean isTopActivity() {
        ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> appProcesses = am.getRunningAppProcesses();
        if (appProcesses == null) {
            return false;
        }
        for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
            if (appProcess.processName.equals(PACKAGE_NAME) && appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                return true;
            }
        }
        return false;
    }

猜你喜欢

转载自www.cnblogs.com/zwting/p/10251314.html