背景
在开发中,经常会需要判断应用是否在前台,根据应用的状态做逻辑处理。如根据应用是否在前台来判断是否需要弹框显示后台推送的消息,根据应用是否在前台来判断是否需要停止和开启某些服务,根据应用是否在前台来判断是否需要触发守护进程将主进程拉到前台来显示等。
判断方法
方式一:根据第一个运行任务栈来判断
public boolean isBackground(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService("activity");
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = ((ActivityManager.RunningTaskInfo) tasks.get(0)).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;