本系列获得应用程序信息文章:

android基础知识15:获得android应用程序(包)信息01—info类

android基础知识15:获得android应用程序(包)信息02—大小

android基础知识15:获得android应用程序(包)信息03—PackageManager

android基础知识15:获得android应用程序(包)信息04—ActivityManager

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


计划如下:
第一部分:获取系统可用内存以及所有的正在运行的进程信息 ;
第二部分:获取每个进程里运行的应用程序信息和所有正在运行的应用程序
第三部分:获取正在运行的服务和任务信息。
每部分都准备了相应的Demo,助您更深的理解.
知识准备:Android 应用程序模块: 应用、任务、进程的知识介绍:
1 一个android 包(简称.apk) :里面包含应用程序的代码以及资源。这是一个应用发布,用户能下载并安装他们设备上的文件。
2 一个 任务 :通常用户能当它为一个“应用程序”来启动:通常在桌面上会有一个图标可以来启动任务,这是一个上层的应用,可以将你的任务切换到前台来。
3 一个 进程 :是一个底层的代码运行级别的核心进程。通常.apk包里所有代码运行在一个进程里,一个进程对一个.apk包;然而,进程 标签常用来改变代码运行的位置,可以是全部的.apk包 或者是独立的活动,接收器,服务, 或者提供器组件。
进程
在Android中,进程是应用程序的完整实现,而不是用户通常了解的那样。他们主要用途很简单:
1、提高稳定性和安全性,将不信任或者不稳定的代码移动到其他进程。
2、可将多个.apk包运行在同一个进程里减少系统开销。
3、帮助系统管理资源,将重要的代码放在一个单独的进程里,这样就可以单独销毁应用程序的其他部分。
于是,为了完成某一任务或者减少系统资源的开销,一个进程里可以运行一个或多个应用程序。

ActivityManager 类:
获取方法

常用的静态内部类如下(下面具体介绍):
ActivityManager.MemoryInfo: 系统可用内存信息
ActivityManager.RecentTaskInfo: 最近的任务信息
ActivityManager.RunningAppProcessInfo: 正在运行的进程信息
ActivityManager.RunningServiceInfo: 正在运行的服务信息
ActivityManager.RunningTaskInfo: 正在运行的任务信息
常用方法:
说明:获取系统可用内存信息,数据封装在outInfo对象上
public Debug.MemoryInfo getProcessMemoryInfo(int[ ] pids
说明:获取每个进程ID(集合)占用的内存大小(集合), pid和MemoryInfo是一一对应的。
参数: pids 进程ID的集合
PS :我们可以通过调用Debug.MemoryInfo 的dalvikPrivateDirty字段获取进程占用的内存大小(单位为KB)
说明: 获取系统里正在运行的进程
说明: 获取系统里所有正在运行的服务
参数:可能服务的最大值(赋予一常数即可,20、50都OK)
说明:获取系统里正在运行的服务
参数: 同上
说明:获取系统里最近启动的任务
参数: 同上,flags一般为0即可
说明:立即杀掉给定包名的进程,释放进程占用的资源(内存等),如果需要,系统会再次重新启动该进程。系统
PS:系统进程是杀不死的,只能杀死用户进程。但我没有找到好的方法辨别系统进程还是用户进程。但可以肯定的是,
能够杀死的一定是用户进程。
说明:该方法已弃用,等同于killBackgroundProcess 。

ActivityManager.MemoryInfo类
常用字段:
long availMem 系统可用内存
long threshold系统内存不足的阀值,即临界值
boolean lowMemory 如果当前可用内存<=threshold,该值为真
ActivityManager.RunningAppProcessInfo类
常用字段:
int pid 进程ID
int uid 进程所在的用户ID
String processName 进程名,默认是包名或者由android:process=””属性指定
String [ ] pkgList 运行在该进程下的所有应用程序包名
对ActivityManager.RecentTaskInfo 、ActivityManager.RunningServiceInfo 、ActivityManager.RunningTaskInfo
类的介绍留在后文介绍。

ActivityManager.RunningAppProcessInfo类
说明: 封装了正在运行的进程信息
常用字段:
int pid 进程ID
int uid 进程所在的用户ID
String processName 进程名,默认是包名或者由android:process=””属性指定
String [ ] pkgList 运行在该进程下的所有应用程序包名
PackageManger类
说明: 封装了对应用程序信息的操作
获得应用程序信息的的方法如下:
public abstract ApplicationInfo getApplicationInfo(String packageName, int flags)
参数:packagename 包名
flags 该ApplicationInfo是此flags标记,通常可以直接赋予常数0即可
功能:返回ApplicationInfo对象
DEMO说明:
我们通过ActivityManager获取了系统的可用内存信息以及正在运行在系统里的进程具体信息,当然你也可以选择
手动杀死这些进程,不过前提是用户进程,因为系统进程是杀不死的。

模拟器上的截图如下:


资源文件什么的就不再贴代码了,直接列出逻辑文件。

获取系统可用内存的代码:MainActivity.java

获取系统进程信息的代码 :BrowseProcessInfoActivity .java

查看所有正在运行的程序:

代码下载地址:http://download.csdn.net/detail/qinjuning/3839045

参考资料:

Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
Android中获取正在运行的应用程序-----ActivityManager.RunningAppProcessInfo类详解

更多相关文章

  1. android google地图定位开发,且可以自由移动位置重新获取定位,地址
  2. android google地图定位开发,且可以自由移动位置重新获取定位,地址
  3. [转]Android媒体的一些使用总结
  4. Android ActivitiyThread的建立
  5. android核心模块及相关技术
  6. Android(安卓)智能手机开发概述
  7. Android(安卓)体系结构介绍
  8. Android启动过程深入解析
  9. android google地图定位开发,且可以自由移动位置重新获取定位,地址

随机推荐

  1. Android(安卓)控件布局常用属性
  2. Android(安卓)Media Recorder录音播放源
  3. 计算图片缩小比例
  4. android 图片放大于缩小
  5. android driver开发常见的英文缩写
  6. UiSelector的官方帮助文档
  7. android测量心率的实现方法
  8. 分享:Android(安卓)-- Properties使用
  9. android > 获取当前位置
  10. Andriod中绘(画)图----Canvas的使用详解