ActivityManager虽然名为Activity管理器,其实际功能比类名描述的广泛,定义的方法涵盖了内存、进程、任务、设备等相关功能。因此,将ActivityManager理解为AppManager,更符合这个类。

内存相关

方法 返回值 解释
getMemoryClass() int 返回当前设备为每个应用程序分配的内存,单位M
getLargeMemoryClass() int 返回当前设备为每个应用程序分配的最大内存,单位M
getMemoryInfo(ActivityManager.MemoryInfo outInfo) 返回系统内存状态的信息。
getMyMemoryState(ActivityManager.RunningAppProcessInfo outState) 为调用进程返回全局内存状态信息。
getProcessMemoryInfo(int[] pids) MemoryInfo[] 返回关于一个或多个进程的内存使用情况的信息。
isLowRamDevice() boolean 如果这是一个低ram设备,返回true。
setWatchHeapLimit(long pssSize) 请求系统监视调用进程的堆限制大小,如果超过pssSize,会自动进行堆转储操作
clearWatchHeapLimit() 清除之前由setWatchHeapLimit(long)设置的Watch Heap限制。
dumpPackageState(FileDescriptor fd, String packageName) 执行与给定应用程序包名称相关的各种状态的系统转储。此调用在执行转储时会阻塞,因此不应在 UI 线程上执行。数据将作为文本写入给定的文件描述符。 。

getMemoryInfo 方法

返回系统的内存信息,用于帮助开发者管理内存。不建议轮询。优先使用onTrimMemory。

MemoryInfo 属性

属性 说明
totalMem 总内存
availMem 系统可用内存
threshold 低内存阈值,即低内存的临界线
lowMemory 是否为低内存状态
public void memoryInfo(View view) {ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo();manager.getMemoryInfo(info);log("info.totalMem:"+toMb(info.totalMem));log("info.availMem:"+toMb(info.availMem));log("info.threshold:"+toMb(info.threshold));log("info.lowMemory:"+info.lowMemory);
}

输出:

info.totalMem:2.96吉字节
info.availMem:820兆字节
info.threshold:226兆字节
info.lowMemory:false

getMyMemoryState 方法

返回调用进程的全局内存状态,只会写入以下字段

RunningAppProcessInfo 属性

属性 说明
pid 进程ID
uid 进程所在的用户ID
lastTrimLevel 报告给进程的最后内存修剪级别
importance 该进程的相对重要级别,值越小级别越高 importance值的意义
lru 当importance == 400 ,即IMPORTANCE_CACHED 时,这个数字才有意义
importanceReasonCode importance 取值的原因
public void memoryState(View view) {ActivityManager.RunningAppProcessInfo info = new ActivityManager.RunningAppProcessInfo();ActivityManager.getMyMemoryState(info);log("info.pid:"+info.pid);log("info.uid:"+info.uid);log("info.lastTrimLevel:" + info.lastTrimLevel);log("info.importance:" + info.importance);log("info.lru:" + info.lru);log("info.importanceReasonCode:" + info.importanceReasonCode);
}

输出:

info.pid:18906
info.uid:10251
info.lastTrimLevel:0
info.importance:100
info.lru:0
info.importanceReasonCode:0

进程相关

方法 返回值 解释
killBackgroundProcesses(String packageName) 让系统立即终止与给定包关联的所有后台进程。
getProcessesInErrorState() List ActivityManager.ProcessErrorStateInfo 返回当前处于错误状态的所有进程的列表。
getRunningAppProcesses() List ActivityManager.RunningAppProcessInfo 返回在设备上运行的应用程序进程列表。
getRunningServiceControlPanel(ComponentName service) PendingIntent 返回一个 PendingIntent,您可以显示给定服务的控制面板。如果服务没有控制面板,则返回 null。
getRunningServices(int maxNum) List ActivityManager.RunningServiceInfo 返回当前运行的Services列表

任务相关

方法 返回值 解释
getAppTasks() List AppTask 获取与应用程序关联的任务列表
addAppTask(Activity activity, Intent intent, ActivityManager.TaskDescription description, Bitmap thumbnail) int 添加一个ActivityManager.AppTask
getAppTaskThumbnailSize() Size 返回用于当前 ActivityManager.AppTask缩略图的当前设计尺寸,用于addAppTask(Activity, Intent, ActivityManager.TaskDescription, Bitmap)
getLockTaskModeState() int 返回当前任务锁定状态。
moveTaskToFront(int taskId, int flags, Bundle options) 请求与给定任务ID关联的任务被移动到堆栈的前面,因此用户现在可以看到它。
moveTaskToFront(int taskId, int flags) 同上

getAppTasks

获取与应用程序关联的任务列表。

Task
一些相关联的activity的集合,但activity之间不一定非得相关联。当我们按home键旁边那个方形键(recent-apps)时,屏幕上展示的就是一个个task。

设备相关

方法 返回值 解释
getDeviceConfigurationInfo() ConfigurationInfo 获取设备配置属性。
getLauncherLargeIconDensity() int 获取启动器图标的首选密度。
getLauncherLargeIconSize() int 获取首选的启动器图标大小。这在创建自定义可绘制对象时使用(例如,用于快捷方式)。
clearApplicationUserData() boolean 允许应用程序从磁盘中擦除自己的数据。这相当于用户选择从设备设置 UI 中清除应用程序的数据。它会删除与应用程序相关的所有动态数据——其私有数据和外部存储上其私有区域中的数据——但不会删除已安装的应用程序本身,也不会删除任何 OBB 文件。它还撤销应用程序已获得的所有运行时权限,清除所有通知并删除与此应用程序相关的所有 Uri 授权。

【Android】ActivityManager的介绍相关推荐

  1. Android Log-日志介绍

    一.基本介绍   Logcat是Android日常开发过程中的重要组成部分.Logcat上会显示系统消息.使用Log类添加到应用的消息.应用运行异常信息等,通过日志,我们可以实时监控应用运行状态,为应 ...

  2. Android Fragment 基本介绍

    Android Fragment 基本介绍 Android Fragment 基本介绍 Fragment Android是在Android 3.0 (API level 11)开始引入Fragment ...

  3. Android Pmem相关介绍

    http://fangjian0518.blog.163.com/blog/#m=0 Android Pmem相关介绍 2011-10-18 09:40:26|  分类: Android PMEM | ...

  4. Kotlin on Android 开发环境介绍

    Kotlin 被 Google 采纳为 Android 开发一级编程语言,到现在也一年多了,我们团队从去年 10 月份开始部分项目尝试用 Kotlin 开发,到现在决定推广到全部项目,因为一旦用上 K ...

  5. Android AIDL使用介绍(3) 浅说AIDL背后的Binder

    1.背景 在前面的博客中,我们已经学会了使用AIDL进行跨进程通信,AIDL的使用比较简单,可实际上跨进程通信是一个相当复杂的过程,例如进程A是怎么找到进程B的,如果有一个进程C冒充进程A,进程B又该 ...

  6. Android AIDL使用介绍(2)自定义数据类型的传递

    1.背景 默认情况下,AIDL只支持下列数据类型: Java八种基础数据类型(如 int.long.char.boolean 等); String字符串: CharSequence字符序列: List ...

  7. Android Canvas类介绍和Android Draw Rect 坐标图示

    当我们调整好画笔之后,现在需要绘制到画布上,这就得用Canvas类了.在Android中既然把Canvas当做画布,那么就可以在画布上绘制我们想要的任何东西.除了在画布上绘制之外,还需要设置一些关于画 ...

  8. linux wifi开发书籍,Android WIFI开发介绍.pdf

    Android WIFI开发介绍: WifiStateTracker 会创建WifiMonitor 接收来自底层的事件,WifiService 和WifiMonitor 是整个模块的核心.WifiSe ...

  9. Android中SlidingDrawer介绍【安卓进化三十四】

    Android中SlidingDrawer介绍[安卓进化三十四] 安卓中1.5后加入了SlidingDrawer[隐藏式抽屉],设计原理在你的UI布局有限的情况下,放不下太多的控件的时候,可以考虑用这 ...

  10. Android项目工程结构介绍

    Android项目工程结构介绍 (1)gradle和.idea Android Studio自动生成的文件,打包的时候一般会删掉再进行打包 (2)app 项目的代码资源都在其中,也是我们工作的核心目录 ...

最新文章

  1. Spring 中的统一异常处理
  2. WinCE5.0如何安装.NET3.5
  3. nginx屏蔽服务器类型信息,简单的禁止CURL 访问服务器nginx
  4. 针对CDP协议攻击分析及安全防护
  5. Mac上显示出.m2文件夹并将IDEA中的Maven修改为阿里云镜像
  6. 从滴滴亏109亿说起
  7. 阶段3 3.SpringMVC·_06.异常处理及拦截器_5 SpringMVC拦截器之编写controller
  8. linux系统可以装sas吗,在SAS硬盘上Linux安装注意的事情。
  9. python中元组的赋值_在Python中,元组可以被赋值修改。( ) (2.0分)_学小易找答案...
  10. 史上最全jquery视频教程
  11. 一台主机接两个显示器并独立使用_一台电脑如何满足多人同时使用?试试这招!...
  12. 华硕aura完全卸载_手感细腻,外观出色,配件良心、华硕TUF GAMING K7 光轴机械键盘...
  13. 小米手机(MIUI 13)安装Fiddler CA证书
  14. 三分钟快速了解怎么查询ip地址,怎么更换ip地址!
  15. 如何通过WWW下载图片 学习笔记
  16. 【无标题】西门子smart触摸屏连接1200PLC
  17. servlet容器,web容器,spring容器,springmvc容器的区别
  18. QT的firstblood
  19. Qt信号与槽机制详解1-创建一个带信号和槽的例子
  20. 提升百度云速度-下载利器aria2简明配置指南

热门文章

  1. 人脸识别数据集的采集
  2. AntDesign Upload组件上传图片
  3. 微信小程序中相机api_微信拍照翻译, 使用小程序拍照翻译API功能
  4. VMware虚拟机安装WIN7操作系统
  5. 非参数统计吴喜之_SPSS混合线性模型在生物医药统计中的应用与操作——【杏花开生物医药统计】...
  6. 雨流计数法的matlab实现,采用三点法与四点法
  7. matlab匿名函数求导,MATLAB进行匿名函数求导出现错误
  8. 论文查重中需要注意的问题
  9. 拉普拉斯平滑处理介绍
  10. Android MVP架构搭建