Android判断当前应用程序状态是在前台还是后台
发布时间:2020-12-14 23:27:21 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 public?static?boolean?isBackground(Context?context)?{????????Log.d("Nat:?isBackground.packageName1",?context.getPackageName());????????Activ
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 public?static?boolean?isBackground(Context?context)?{ ????????Log.d("Nat:?isBackground.packageName1",?context.getPackageName()); ????????ActivityManager?activityManager?=?(ActivityManager)?context.getSystemService(Context.ACTIVITY_SERVICE); ????????List<ActivityManager.RunningAppProcessInfo>?appProcesses?=?activityManager.getRunningAppProcesses(); ????????for?(ActivityManager.RunningAppProcessInfo?appProcess?:?appProcesses)?{ ????????????Log.d("Nat:?isBackground.processName",?appProcess.processName); ????????????if?(appProcess.processName.equals(context.getPackageName()))?{ ????????????????Log.d("Nat:?isBackground.importance",?String.valueOf(appProcess.importance)); ????????????????if?(appProcess.importance?==?ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND)?{ ????????????????????Log.i("后台",?appProcess.processName); ????????????????????return?true; ????????????????}else{ ????????????????????Log.i("前台",?appProcess.processName); ????????????????????return?false; ????????????????} ????????????} ????????} ????????return?false; ????} class?ForegroundCheckTask?extends?AsyncTask<Context,?Void,?Boolean>?{ ????????@Override ????????protected?Boolean?doInBackground(Context...?params)?{ ????????????final?Context?context?=?params[0].getApplicationContext(); ????????????return?isAppOnForeground(context); ????????} ????????private?boolean?isAppOnForeground(Context?context)?{ ????????????ActivityManager?activityManager?=?(ActivityManager)?context.getSystemService(Context.ACTIVITY_SERVICE); ????????????List<ActivityManager.RunningAppProcessInfo>?appProcesses?=?activityManager.getRunningAppProcesses(); ????????????if?(appProcesses?==?null)?{ ????????????????return?false; ????????????} ????????????final?String?packageName?=?context.getPackageName(); ????????????Log.d("Nat:?isAppOnForeground.packageName",?context.getPackageName()); ????????????for?(ActivityManager.RunningAppProcessInfo?appProcess?:?appProcesses)?{ ????????????????Log.d("Nat:?isAppOnForeground.processName",?appProcess.processName); ????????????????if?(appProcess.importance?==?ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND?&&?appProcess.processName.equals(packageName))?{ ????????????????????return?true; ????????????????} ????????????} ????????????return?false; ????????} ????} public?static?boolean?isForeground(Context?context)?{ ????????Log.d("Nat:?isBackground.checkPackageName",?context.getPackageName()); ????????ActivityManager?am??=?(ActivityManager)?context.getSystemService(Context.ACTIVITY_SERVICE); ????????List<ActivityManager.RunningTaskInfo>?runningTasks?=?am.getRunningTasks(1); ????????if?(runningTasks?!=?null){ ????????????//?The?first?in?the?list?of?RunningTasks?is?always?the?foreground?task. ????????????ActivityManager.RunningTaskInfo?foregroundTaskInfo?=?runningTasks.get(0); ????????????String?foregroundTaskPackageName?=?foregroundTaskInfo?.topActivity.getPackageName(); ????????????Log.d("Nat:?isBackground.foregroundTaskPackageName",?foregroundTaskPackageName); ????????????if?(context.getPackageName().equals(foregroundTaskPackageName)){ ????????????????return?true; ????????????} //????????????PackageManager?pm?=?context.getPackageManager(); //????????????PackageInfo?foregroundAppPackageInfo?=?pm.getPackageInfo(foregroundTaskPackageName,?0); //????????????String?foregroundTaskAppName?=?foregroundAppPackageInfo.applicationInfo.loadLabel(pm).toString(); ????????} ????????return?false; ????} 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |