Android ActivityManager
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: 正在运行的任务信息
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相关推荐
- Android ActivityManager 检测Service与Activity运行状态
2019独角兽企业重金招聘Python工程师标准>>> 在后台与网络交互中,需要使用Service来和服务器保持连接,因此Service在被进程Kill掉后,主动开启Service是 ...
- Android ActivityManager: Waited long enough for: ServiceRecord
开机启动服务报错: ActivityManager: Waited long enough for: ServiceRecord 解决方法: AndroidManifest.xml中applicati ...
- Android ActivityManager 检测Service与Activity是否正在运行
检测Service是否已启动 public static boolean isServiceRunning(String serviceClassName){ final ActivityManage ...
- Android ActivityManager常用方法,kotlin协程的理解
PERMISSION_REQUIRED:NULL RESULT:processName=com.demo.activitymanager pid=4317 uid=10311 memorySize=1 ...
- android activityManager
不错: http://blog.sina.com.cn/s/blog_8984d3f301011peb.html 转载于:https://www.cnblogs.com/lotusve/archive ...
- Android组件框架:Android组件管理者ActivityManager
关于作者 郭孝星,程序员,吉他手,主要从事Android平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的Github提issue或者发邮件至guoxiaoxingse@163.com与我交流 ...
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...
- Android中ActivityManager学习笔记
在之前写过2篇关于ActivityManager的文章,如下所示.都是通过实战去了解里面的信息,现在感觉太繁琐,所以做一个api介绍比较详细.就像之前学习Telephony那样,对整体了解整个Acti ...
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
关于PackageManager和ActivityManager的使用 ,自己也写了一些DEMO 了,基本上写的线路参考了Settings模块下的 应用程序,大家如果真正的有所兴趣,建议大家看看源码, ...
- Android怎么结束一个进程,我试了用 ActivityManager.killBackgroundProcesses方法去结束,但是没有反应
在android2.2以后,如果服务在ondestroy里加上了start自己,用kill backgroudprocess通常无法结束自己. 有一种最新发现的方法,利用反射调用forceStopPa ...
最新文章
- 【翻译】(11)NDK Build
- 云宏与Rancher达成合作伙伴关系,结合金融领域客户特点联合打造WinGarden 2.0容器云平台...
- 如何自动填充网页表单_iCab for Mac(web网页浏览器)
- d3 i5 神舟精盾k480n_神舟精盾k480n i5 d3和精盾i5 d1哪个好?
- 关于数据仓库的架构及3大类组件工具选型
- python +selenium +chrome/firefox 环境配置
- MATLAB的7种滤波方法(重制版)
- xp3系统配置cocos2dx
- 利用最大流最小割算法matlab割图
- 打印机简体打出繁体、乱码解决办法
- ERROR in Entry module not found: Error: Can‘t resolve ‘./src/index.js‘ in‘xxx.js‘
- sqlite中的 database is locked 问题
- C语言 空气质量优良率
- Libata错误信息解析
- 图计算库 igraph 在 windows 10 上的编译安装
- 【H5/JS】游戏常用算法-碰撞检测-包围盒检测算法(2)-矩形
- 【MySQL基础】MySQL介绍及安装
- 基于单片机的多功能智能指纹_手机_门禁卡_按键密码锁系统设计
- 机器学习(八):CS229ML课程笔记(4)——生成学习,高斯判别分析,朴素贝叶斯
- html显示和隐藏文字特效,14款震撼人心的HTML5文字特效
热门文章
- linux sz 大于4g,ubuntu 使用sz命令传输windows大于4G的文件
- Angular端口4200被占用后如何处理
- PLC控制电机正反转原理图
- 玩王者荣耀用不好英雄?两阶段算法帮你精准推荐精彩视频
- 微信小程序 人脸识别功能 代码 wx.faceDetect
- linux 更新cuda 驱动程序,记:第一次更新服务器CUDA和GPU驱动
- Houdini定义属性方式
- POP模式,提示密码错误的问题(密码是对的)
- pixhawk position_estimator_inav.cpp再分析
- 朗科N500S 120G开卡修复工具 SM2258XT_B16A_PKGQ1024B_FWQ0922A0