Android 判断当前App 是在前台还是在后台

转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52331050 文章出自:薛瑄的博客

你也可以查看我的其他同类文章,也会让你有一定的收货

第一种:

    /**
     *判断当前应用程序处于前台还是后台
     * 
     * @param context
     * @return    

     */

    public static boolean isApplicationBroughtToBackground(final Context context) {
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningTaskInfo> tasks = am.getRunningTasks(1);
        if (!tasks.isEmpty()) {
            ComponentName topActivity = tasks.get(0).topActivity;
            if (!topActivity.getPackageName().equals(context.getPackageName())) {
                return true;
            }
        }
        return false;
    }

上面这段代码是需要一个权限的:

< uses-permission Android:name=”android.permission.GET_TASKS” />

第二种:

下面这段代码是我最新发现,无需权限,妥妥滴:

不过我稍微做了调整,后台分为:service后台和activity后台,这里认为不是前台的都认为后台。

  • service运行在后台,appProcess.importance = IMPORTANCE_SERVICE
  • 没有service运行的后台,
public static boolean isBackground(Context context) {


        ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
            if (appProcess.processName.equals(context.getPackageName())) {
                if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                    System.out.print(String.format("Foreground App:", appProcess.processName));
                    return false;
                }else{
                    System.out.print("Background App:"+appProcess.processName);
                    return true;
                }
            }
        }
        return false;
    }

参考: android 判断当前application 是在前台还是在后台

关注我的公众号,轻松了解和学习更多技术
这里写图片描述

发布了242 篇原创文章 · 获赞 776 · 访问量 226万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503

分享到微信朋友圈

×

扫一扫,手机浏览