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;
    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM