在我们做一些应用的时候 ,往往会有一些需求,需要判断当前应用在前台还是在后台,让后一些操作,比如重新登陆,提示弹框什么的 这样就需要我们来做一些判断了 下面是我写的一些方法
RunningTask
原理:
当一个 App 处于前台的时候,会处于 RunningTask 的这个栈的栈顶,所以我们可以取出 RunningTask 的栈顶的任务进程,看他与我们的想要判断的 App 的包名是否相同,来达到效果
缺点:
getRunningTask 方法在 Android5.0 以上已经被废弃,只会返回自己和系统的一些不敏感的 task,不再返回其他应用的 task,用此方法来判断自身 App 是否处于后台,仍然是有效的,但是无法判断其他应用是否位于前台,因为不再能获取信息
public boolean isRunningForground(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); ComponentName componentName = activityManager.getRunningTasks(1).get(0).topActivity; String pakagename = componentName.getPackageName();