android activitymanager 系统api_Android view

android activitymanager 系统api_Android viewActivityManager服务是对Activity管理、运行时功能管理和运行时数据结构的封装,进程(Process)、应用程序/包、服务(Service)、任务(Task)信息等。包括以下功能: 激活/去激活activity注册/取消注册动态接受intent发送/取消发送intentactivity生命周期管理(暂停,恢复,停止,销毁等)activitytask管理(前台->后台,后台…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

ActivityManager服务是对Activity管理、运行时功能管理和运行时数据结构的封装,进程(Process)、应用程序/包、服务(Service)、任务(Task)信息等。包括以下功能:

 

  • 激活/去激活activity
  • 注册/取消注册动态接受intent
  • 发送/取消发送intent
  • activity生命周期管理(暂停,恢复,停止,销毁等)
  • activity task管理(前台->后台,后台->前台,最近task查询,运行时task查询)
  • 激活/去激活service
  • 激活/去激活provider等

常用内部静态类有:

ActivityManager.MemoryInfo: 系统可用内存信息

ActivityManager.RecentTaskInfo: 最近的任务信息

ActivityManager.RunningAppProcessInfo: 正在运行的进程信息

ActivityManager.RunningServiceInfo: 正在运行的服务信息

ActivityManager.RunningTaskInfo: 正在运行的任务信息

imageimage

 

用法:

1.获取ActivityManager服务:

ActivityManager mActivityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

2.获取内存信息:

MemoryInfo memoryInfo = new MemoryInfo() ; 
     mActivityManager.getMemoryInfo(memoryInfo);

3.获取正在运行的task信息:

 List<RunningTaskInfo> runningTaskInfos = mActivityManager.getRunningTasks(Integer.MAX_VALUE);
    String cmpNameTemp = null;
    if (null != runningTaskInfos)
    {
        cmpNameTemp = (runningTaskInfos.get(0).topActivity).toString();
    }
4.判断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;
    }
5.获取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;
    }

6.判断程序前后台状态:

public static boolean isLauncherRunning(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;
    }
7.获取系统中进程信息:

private void getRunningAppProcessInfo() {   
        processInfoList = new ArrayList<ProcessInfo>(); 

   List<ActivityManager.RunningAppProcessInfo> appProcessList = mActivityManager.getRunningAppProcesses(); 

   for (ActivityManager.RunningAppProcessInfo appProcessInfo : appProcessList) { 

        int pid = appProcessInfo.pid; 

        int uid = appProcessInfo.uid; 

       String processName = appProcessInfo.processName; 

       int[] myMempid = new int[] { pid }; 

       Debug.MemoryInfo[] memoryInfo = mActivityManager.getProcessMemoryInfo(myMempid); 

       int memSize = memoryInfo[0].dalvikPrivateDirty; 

       Log.i(TAG, “processName: ” + processName + ”  pid: ” + pid 

                    + ” uid:” + uid + ” memorySize is –>” + memSize + “kb”); 

            // 构造一个ProcessInfo对象

            ProcessInfo processInfo = new ProcessInfo(); 

            processInfo.setPid(pid); 

            processInfo.setUid(uid); 

            processInfo.setMemSize(memSize); 

            processInfo.setPocessName(processName); 

            processInfoList.add(processInfo); 

 

           // 获得每个进程里运行的应用程序(包),即每个应用程序的包名

            String[] packageList = appProcessInfo.pkgList; 

            Log.i(TAG, “process id is ” + pid + “has ” + packageList.length); 

            for (String pkg : packageList) { 

                Log.i(TAG, “packageName ” + pkg + ” in process id is –>”+ pid); 

            } 

        } 

    } 

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

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

(0)
上一篇 2025年9月30日 下午2:15
下一篇 2025年9月30日 下午2:43


相关推荐

  • 【AI智能体】腾讯云服务器部署OpenClaw对接飞书实战详解

    【AI智能体】腾讯云服务器部署OpenClaw对接飞书实战详解

    2026年3月13日
    1
  • 数字电路实验环境 (Quartus II 9.0)

    数字电路实验环境 (Quartus II 9.0)大家好,我是孙不坚1208,记录一下数字电路这门课的实验环境((QuartusII9.0))安装。所需文件网盘链接:https://pan.baidu.com/s/1VnCc4wR7HAOgxfyWjoUHjw提取码:0kjq安装教程仅限于学习,安装前先关闭各类杀毒软件,注意安装路径不能有中文,存放安装包的路径最好也不要有中文。我们首先在c盘建好相应的文件目录,然后进行安装在此目录下。一、安装QuartusII9.0等它稍微加载,出现下面这个界面。这里进行安装,无脑点击下一步

    2022年7月12日
    23
  • manifest文件使用(manifest文件作用)

    解决难以打开MANIFEST文件的问题打开MANIFEST文件的麻烦MicrosoftNotepad已删除你尝试加载MANIFEST文件并收到错误,例如“%%os%%无法打开MANIFEST文件扩展名”。通常情况下,这意味着MicrosoftNotepad没有安装在%%os%%上。由于您的操作系统不知道如何处理此文件,因此无法通过双击将其打开。提示:如果你…

    2022年4月11日
    187
  • 关于pycharm使用多行注释注释中文时会报黄的问题

    关于pycharm使用多行注释注释中文时会报黄的问题关于 pycharm 使用多行注释注释中文时会报黄的问题先看一下问题因为之前使用的一直是 python3 版本没有出现过这种情况 上网查了查 发现 python2 会出现这种情况 又看了一下公司现在用的版本 三个字 草率了 然后恍然大悟 急忙再第一行加上了 coding utf8 效果如图自此 我们也来温习下 python2 和 python3 的一些区别点 编码方面 python2 中的默认编码时 ASCII 这也是 python2 经常出现编码问题的原因之一 python3 的

    2026年3月27日
    1
  • DDOS攻击工具有哪些?怎么防御DDOS攻击?

    DDOS攻击工具有哪些?怎么防御DDOS攻击?互联网的发展给大家带来的很多的便利,也有很多的业务机会,带来很多利益,但凡事都有两面性,有利益也会有危害,例如黑客会通过互联网进行攻击,导致企业损失。DDOS就是黑客常用的攻击手段,也是企业惧怕的一件事,如果真的不小心遭受到DDOS攻击,那么后果真的是会难以想象。黑客一般是会通过软件进行攻击,那么你知道常用的DDOS攻击工具有哪些?1、卢瓦(LOIC)卢瓦在黑客领域就很有知名度,也是他们常用的DOS攻击工具之一,这个工具经常被黑客利用,对很多的大公司进行网络攻击。卢瓦能使用单个用户执行DOS攻击

    2022年7月27日
    21
  • SENet实战详解:使用SE-ReSNet50实现对植物幼苗的分类

    SENet实战详解:使用SE-ReSNet50实现对植物幼苗的分类摘要 1 SENet 概述 Squeeze and ExcitationNe 简称 SENet 是 Momenta 胡杰团队 WMW 提出的新的网络结构 利用 SENet 一举取得最后一届 ImageNet2017 竞赛 ImageClassif 任务的冠军 在 ImageNet 数据集上将 top 5error 降低到 2 251 原先的最好成绩是 2 991 作者在文中将 SENetblock 插入到现有的多种分类网络中 都取得了不错的效果 作者的动机是希望显式地建模

    2025年7月23日
    5

发表回复

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

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