美文网首页
Android判断程序运行在后台还是前台

Android判断程序运行在后台还是前台

作者: 星彬 | 来源:发表于2017-04-24 16:46 被阅读42次

//第一种方法

需要清单文件
<uses-permission Android:name="android.permission.GET_TASKS" />

public static boolean isApplicationBroughtToBackground(final Context context) {
    //创建activity管理对象
   ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);

    //取出RunningTask栈
   List<ActivityManager.RunningTaskInfo> list =activityManager.getRunningTasks(1);
    //判断是否为空
    if (!list.isEmpty()){
        //取出运行在栈顶的任务进程
        ComponentName componentName = list.get(0).topActivity;
        //判断任务进程的包名是否和想要判断的程序包名相同
        if (componentName.getPackageName().equals(context.getPackageName())){
            //相同则说明你该程序运行在前台,则返回ture
            return true;
        }
    }
    //否则返回false
    return false;
}

//第二种方法

public static boolean isBackground(Context context) {
    //创建activity管理对象
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    //获取当前正在运行的进程的list
    List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
    //找到需要判断的程序的进程
    //从appProcesses把进程一个一个取出
    for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {

        //判断包名来找到自己的程序
        if (appProcess.processName.equals(context.getPackageName())) {

            /*
            * IMPORTANCE_BACKGROUND   后台
        IMPORTANCE_EMPTY    空
        IMPORTANCE_FOREGROUND   前台
        IMPORTANCE_PERCEPTIBLE  //后台,但是可以和用户进行交互(一般音乐播放器)
       IMPORTANCE_SERVICE    服务
        IMPORTANCE_VISIBLE    可见
            * */

            //判断importance属性是否为IMPORTANCE_BACKGROUND?
            if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
                Log.i("后台", appProcess.processName);
                return true;
            }else{
                Log.i("前台", appProcess.processName);
                return false;
            }
        }
    }
    return false;
}

相关文章

网友评论

      本文标题:Android判断程序运行在后台还是前台

      本文链接:https://www.haomeiwen.com/subject/toupzttx.html