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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 三维地图与同城交易

    三维地图与同城交易

    2021年7月25日
    55
  • ActionScript项目无法调试[通俗易懂]

    ActionScript项目无法调试[通俗易懂]C:\WINDOWS\system32\Macromed\Flash\Flash10b.ocx程序调试需要安装9版本的,这是已经安装的10版本的,需要再下一个flashplayer_10_ax_debug.exe来提供支持

    2022年10月14日
    4
  • mvc3_bootstrap和数据库交互

    mvc3_bootstrap和数据库交互对于MVC的编程,主要应该先了解M(模型)-V(视图)-C(控制器)的相关概念,并进而理解相关的框架类别及操作方法.

    2022年9月29日
    7
  • docker网络的配置

    docker网络的配置docker网络的配置Linux内核实现名称空间的创建ipnetns命令可以借助ipnetns命令来完成对NetworkNamespace的各种操作。ipnetns命令来自于iproute安装包,一般系统会默认安装,如果没有的话,请自行安装。注意:ipnetns命令修改网络配置时需要sudo权限。可以通过ipnetns命令完成对NetworkNamespace的相关操作,可以通过ipnetnshelp查看命令帮助信息:[root@localhost~]#ipne

    2022年6月17日
    27
  • pycharm如何打开py文件_怎么用terminal打开文件

    pycharm如何打开py文件_怎么用terminal打开文件Pycharm的下方工具栏中有两个窗口:PythonConsole和Terminal(如下图)其中,PythonConsole叫做Python控制台,即Python交互模式;Terminal叫做终端,即命令行模式。Python交互模式主要有两种:CPython用>>>作为提示符,而IPython用In[序号]:作为提示符。Python交互式模式可以直接输入代码,然后执行,并立刻得到结果,因此Python交互模式主要是为了调试Python代码用的。命..

    2022年8月26日
    7
  • cleanwipe使用方法_清空qq缓存数据会怎样

    cleanwipe使用方法_清空qq缓存数据会怎样glassfish清空缓存rm-rf$GLASSFISH_HOME/glassfish/domains/domain1/generated/*rm-rf$GLASSFISH_HOME/glassfish/domains/domain1/osgi-cache/*rm-rf $GLASSFISH_HOME/glassfish/domains/domain1/applicat

    2022年8月22日
    9

发表回复

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

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