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: 正在运行的任务信息

用法:

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);

}

}

}

Android ActivityManager相关推荐

  1. Android ActivityManager 检测Service与Activity运行状态

    2019独角兽企业重金招聘Python工程师标准>>> 在后台与网络交互中,需要使用Service来和服务器保持连接,因此Service在被进程Kill掉后,主动开启Service是 ...

  2. Android ActivityManager: Waited long enough for: ServiceRecord

    开机启动服务报错: ActivityManager: Waited long enough for: ServiceRecord 解决方法: AndroidManifest.xml中applicati ...

  3. Android ActivityManager 检测Service与Activity是否正在运行

    检测Service是否已启动 public static boolean isServiceRunning(String serviceClassName){ final ActivityManage ...

  4. Android ActivityManager常用方法,kotlin协程的理解

    PERMISSION_REQUIRED:NULL RESULT:processName=com.demo.activitymanager pid=4317 uid=10311 memorySize=1 ...

  5. android activityManager

    不错: http://blog.sina.com.cn/s/blog_8984d3f301011peb.html 转载于:https://www.cnblogs.com/lotusve/archive ...

  6. Android组件框架:Android组件管理者ActivityManager

    关于作者 郭孝星,程序员,吉他手,主要从事Android平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的Github提issue或者发邮件至guoxiaoxingse@163.com与我交流 ...

  7. Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)

    本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...

  8. Android中ActivityManager学习笔记

    在之前写过2篇关于ActivityManager的文章,如下所示.都是通过实战去了解里面的信息,现在感觉太繁琐,所以做一个api介绍比较详细.就像之前学习Telephony那样,对整体了解整个Acti ...

  9. Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用

    关于PackageManager和ActivityManager的使用 ,自己也写了一些DEMO 了,基本上写的线路参考了Settings模块下的 应用程序,大家如果真正的有所兴趣,建议大家看看源码, ...

  10. Android怎么结束一个进程,我试了用 ActivityManager.killBackgroundProcesses方法去结束,但是没有反应

    在android2.2以后,如果服务在ondestroy里加上了start自己,用kill backgroudprocess通常无法结束自己. 有一种最新发现的方法,利用反射调用forceStopPa ...

最新文章

  1. 【翻译】(11)NDK Build
  2. 云宏与Rancher达成合作伙伴关系,结合金融领域客户特点联合打造WinGarden 2.0容器云平台...
  3. 如何自动填充网页表单_iCab for Mac(web网页浏览器)
  4. d3 i5 神舟精盾k480n_神舟精盾k480n i5 d3和精盾i5 d1哪个好?
  5. 关于数据仓库的架构及3大类组件工具选型
  6. python +selenium +chrome/firefox 环境配置
  7. MATLAB的7种滤波方法(重制版)
  8. xp3系统配置cocos2dx
  9. 利用最大流最小割算法matlab割图
  10. 打印机简体打出繁体、乱码解决办法
  11. ERROR in Entry module not found: Error: Can‘t resolve ‘./src/index.js‘ in‘xxx.js‘
  12. sqlite中的 database is locked 问题
  13. C语言 空气质量优良率
  14. Libata错误信息解析
  15. 图计算库 igraph 在 windows 10 上的编译安装
  16. 【H5/JS】游戏常用算法-碰撞检测-包围盒检测算法(2)-矩形
  17. 【MySQL基础】MySQL介绍及安装
  18. 基于单片机的多功能智能指纹_手机_门禁卡_按键密码锁系统设计
  19. 机器学习(八):CS229ML课程笔记(4)——生成学习,高斯判别分析,朴素贝叶斯
  20. html显示和隐藏文字特效,14款震撼人心的HTML5文字特效

热门文章

  1. linux sz 大于4g,ubuntu 使用sz命令传输windows大于4G的文件
  2. Angular端口4200被占用后如何处理
  3. PLC控制电机正反转原理图
  4. 玩王者荣耀用不好英雄?两阶段算法帮你精准推荐精彩视频
  5. 微信小程序 人脸识别功能 代码 wx.faceDetect
  6. linux 更新cuda 驱动程序,记:第一次更新服务器CUDA和GPU驱动
  7. Houdini定义属性方式
  8. POP模式,提示密码错误的问题(密码是对的)
  9. pixhawk position_estimator_inav.cpp再分析
  10. 朗科N500S 120G开卡修复工具 SM2258XT_B16A_PKGQ1024B_FWQ0922A0