zoukankan      html  css  js  c++  java
  • Android获取Activity(应用)的执行状态及其它信息


    检測某Activity是否在当前Task的栈顶

    public static boolean isTopActivy(String cmdName, Context context)
        {
            ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
            List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(Integer.MAX_VALUE);
            String cmpNameTemp = null;
            if (null != runningTaskInfos)
            {
                cmpNameTemp = (runningTaskInfos.get(0).topActivity).toString();
            }
    
            if (null == cmpNameTemp)
            {
                return false;
            }
            
            return cmpNameTemp.equals(cmdName);
    
        }


    推断Android应用是否在前台

    public static boolean isAppOnForeground(Context context)
        {
            ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
            String packageName = context.getPackageName();
            List<RecentTaskInfo> appTask = activityManager.getRecentTasks(Integer.MAX_VALUE, 1);
            
            if (appTask == null)
            {
                return false;
            }
            
            if (appTask.get(0).baseIntent.toString().contains(packageName))
            {
                return true;
            }
            return false;
        }


    获取Android手机内安装的全部桌面

    private static List<String> getAllTheLauncher(Context context)
        {
            List<String> names = null;
            PackageManager pkgMgt = context.getPackageManager();
            Intent it = new Intent(Intent.ACTION_MAIN);
            it.addCategory(Intent.CATEGORY_HOME);
            List<ResolveInfo> ra = pkgMgt.queryIntentActivities(it, 0);
            if (ra.size() != 0)
            {
                names = new ArrayList<String>();
            }
            for (int i = 0; i < ra.size(); i++)
            {
                String packageName = ra.get(i).activityInfo.packageName;
                names.add(packageName);
            }
            return names;
        }

    Android 推断程序前后台状态

    public static boolean isLauncherRunnig(Context context)
        {
            boolean result = false;
            List<String> names = getAllTheLauncher(context);
            ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
            List<ActivityManager.RunningAppProcessInfo> appList = mActivityManager.getRunningAppProcesses();
            for (RunningAppProcessInfo running : appList)
            {
                if (running.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND)
                {
                    for (int i = 0; i < names.size(); i++)
                    {
                        if (names.get(i).equals(running.processName))
                        {
                            result = true;
                            break;
                        }
                    }
                }
            }
            return result;
        }


  • 相关阅读:
    rsync+inotify实现全网自动化数据备份-技术流ken
    高可用集群之keepalived+lvs实战-技术流ken
    高负载集群实战之lvs负载均衡-技术流ken
    实战!基于lamp安装Discuz论坛-技术流ken
    iptables实战案例详解-技术流ken
    (3)编译安装lamp三部曲之php-技术流ken
    (2)编译安装lamp三部曲之mysql-技术流ken
    (1)编译安装lamp三部曲之apache-技术流ken
    实战!基于lamp安装wordpress详解-技术流ken
    yum一键安装企业级lamp服务环境-技术流ken
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5124782.html
Copyright © 2011-2022 走看看