Android获取Activity(应用)的执行状态及其它信息[通俗易懂]

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;
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116351.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Matlab中 axis 函数用法总结

    Matlab中 axis 函数用法总结axis——设置坐标轴【功能】对坐标轴进行标定。【语法介绍】axis([xminxmaxyminymax])设置当前二维图形对象的x轴和y轴的取值范围。向量参数[xminxmaxyminymax]中的元素分别表示x轴最小值、x轴最大值、y轴最小值和y轴最大值。axis([xminxmaxyminymaxzminzmaxcmincmax])设置x,y,z轴的取值范围和颜色范围。[xminxmaxyminymaxzminzm

    2022年5月4日
  • 三次握手四次挥手例题(tcp三次握手原理)

    在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。三次握手当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答:首先很多人会先讲下握…

    2022年4月10日
  • 数据库DSN是什么

    数据库DSN是什么

    2021年10月31日
  • Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

    Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」本篇博客是整理git相关知识的第一篇,因为之前一直是用SourceTree对Git的命令行操作用的不是特别熟,于是乎过了一遍ProGit(链接:https://git-scm.com/book/zh/

    2022年7月1日
  • 校园二手交易平台的简要分析(纯文档)[通俗易懂]

    校园二手交易平台的简要分析(纯文档)[通俗易懂]校园二手交易平台的简要分析 摘要:校园二手市场就是建立在校园里的提供学生们进行二手物品交易的场所。二手交易在大学校园里面比较常见,一方面,大学生热衷潮流,消费需求较旺盛,但也容易因为冲动购物而产生较多的闲置物品;另一方面,大部分大学生经济未独立,资金来源主要是依靠父母,经济能力有限。现在国家倡导可循环经济,人们的环保意识逐渐增强,加之旺盛的需求与滞后的经济能力形成的鲜明反差,为校园二手市场…

    2022年6月17日
  • 100 个网络基础知识普及,看完成半个网络高手[通俗易懂]

    1)什么是链接?链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。2)OSI参考模型的层次是什么?有7个OSI层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。3)什么是骨干网?骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。它还处理带宽管理和各种通道。4)什么是LAN?LAN是局域网的缩写。…

    2022年4月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号