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


相关推荐

  • RadControls for ASP.NET Ajax 笔记(1)

    RadControls for ASP.NET Ajax 笔记(1)(1)遍历Grid中的所有Item(一行),一次仅展开一行【Singleexpandinhierarchicalgrid】privatevoidRadGrid1_ItemCommand(objectsource,Telerik.Web.UI.GridCommandEventArgse){if(e.CommandName==RadGrid.ExpandCo…

    2022年7月19日
    14
  • Java爬虫系列一:写在开始前[通俗易懂]

    最近在研究Java爬虫,小有收获,打算一边学一边跟大家分享下,在干货开始前想先跟大家啰嗦几句。一、首先说下为什么要研究Java爬虫Python已经火了很久了,它功能强大,其中很擅长的一个就是写爬虫

    2022年2月16日
    40
  • p90灯珠和p70灯珠区别_pc50是什么材料

    p90灯珠和p70灯珠区别_pc50是什么材料p50,p90,p99(或者写作pct50,pct90,pct99)都是数据聚合统计一种方式,跟百分比相关。p50:数据集按升序排列,第50分位置大的数据(即升序排列后排在50%位置的数据)。p90:数据集按升序排列,第90分位置大的数据(即升序排列后排在90%位置的数据)。p99:数据集按升序排列,第99分位置大的数据(即升序排列后排在99%位置的数据)。有什么实际含义和用处?经常用来衡量服务响应延迟。以最常用的p99为例,它衡量了99%的情况下能达到的最大延迟,99%的请求都低于

    2025年6月15日
    2
  • jsp中JDBC连接MySQL数据库[通俗易懂]

    jsp中JDBC连接MySQL数据库[通俗易懂]前言:在进行网页制作时,难免会有数据库的使用,今天来讲一下jsp中利用JDBC连接MySQL数据库:::文章目录:一.JDBC:二.连接数据库:1.需要的包:2.加载驱动:3.连接数据库:一.JDBC:JDBC:Java数据库连接(JavaDatabaseConnectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是SunMicrosystems的商标。我们通常说的JDBC是面向关系型数据库的。(–

    2025年10月15日
    6
  • angular子组件传值给父组件[通俗易懂]

    angular子组件传值给父组件[通俗易懂]angular子组件传值给父组件step1: D:\vue\untitled2901\src\app\app.component.tsimport{Component}from’@angular/core’;@Component({selector:’app-root’,template:`Message:{{message}}<app-child(messageEvent)=”receiveMessage($event)”></app

    2025年7月11日
    6
  • cpu,核心数,线程抢占式分配理解,时间分片机制总结,进程和线程关系及区别,[通俗易懂]

    cpu,核心数,线程抢占式分配理解,时间分片机制总结,进程和线程关系及区别,[通俗易懂]cpu,核心数,线程抢占式分配理解,时间分片机制总结,进程和线程关系及区别,

    2022年4月23日
    265

发表回复

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

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