【Android】ActivityManager的介绍
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的介绍相关推荐
- Android Log-日志介绍
一.基本介绍 Logcat是Android日常开发过程中的重要组成部分.Logcat上会显示系统消息.使用Log类添加到应用的消息.应用运行异常信息等,通过日志,我们可以实时监控应用运行状态,为应 ...
- Android Fragment 基本介绍
Android Fragment 基本介绍 Android Fragment 基本介绍 Fragment Android是在Android 3.0 (API level 11)开始引入Fragment ...
- Android Pmem相关介绍
http://fangjian0518.blog.163.com/blog/#m=0 Android Pmem相关介绍 2011-10-18 09:40:26| 分类: Android PMEM | ...
- Kotlin on Android 开发环境介绍
Kotlin 被 Google 采纳为 Android 开发一级编程语言,到现在也一年多了,我们团队从去年 10 月份开始部分项目尝试用 Kotlin 开发,到现在决定推广到全部项目,因为一旦用上 K ...
- Android AIDL使用介绍(3) 浅说AIDL背后的Binder
1.背景 在前面的博客中,我们已经学会了使用AIDL进行跨进程通信,AIDL的使用比较简单,可实际上跨进程通信是一个相当复杂的过程,例如进程A是怎么找到进程B的,如果有一个进程C冒充进程A,进程B又该 ...
- Android AIDL使用介绍(2)自定义数据类型的传递
1.背景 默认情况下,AIDL只支持下列数据类型: Java八种基础数据类型(如 int.long.char.boolean 等); String字符串: CharSequence字符序列: List ...
- Android Canvas类介绍和Android Draw Rect 坐标图示
当我们调整好画笔之后,现在需要绘制到画布上,这就得用Canvas类了.在Android中既然把Canvas当做画布,那么就可以在画布上绘制我们想要的任何东西.除了在画布上绘制之外,还需要设置一些关于画 ...
- linux wifi开发书籍,Android WIFI开发介绍.pdf
Android WIFI开发介绍: WifiStateTracker 会创建WifiMonitor 接收来自底层的事件,WifiService 和WifiMonitor 是整个模块的核心.WifiSe ...
- Android中SlidingDrawer介绍【安卓进化三十四】
Android中SlidingDrawer介绍[安卓进化三十四] 安卓中1.5后加入了SlidingDrawer[隐藏式抽屉],设计原理在你的UI布局有限的情况下,放不下太多的控件的时候,可以考虑用这 ...
- Android项目工程结构介绍
Android项目工程结构介绍 (1)gradle和.idea Android Studio自动生成的文件,打包的时候一般会删掉再进行打包 (2)app 项目的代码资源都在其中,也是我们工作的核心目录 ...
最新文章
- Spring 中的统一异常处理
- WinCE5.0如何安装.NET3.5
- nginx屏蔽服务器类型信息,简单的禁止CURL 访问服务器nginx
- 针对CDP协议攻击分析及安全防护
- Mac上显示出.m2文件夹并将IDEA中的Maven修改为阿里云镜像
- 从滴滴亏109亿说起
- 阶段3 3.SpringMVC·_06.异常处理及拦截器_5 SpringMVC拦截器之编写controller
- linux系统可以装sas吗,在SAS硬盘上Linux安装注意的事情。
- python中元组的赋值_在Python中,元组可以被赋值修改。( ) (2.0分)_学小易找答案...
- 史上最全jquery视频教程
- 一台主机接两个显示器并独立使用_一台电脑如何满足多人同时使用?试试这招!...
- 华硕aura完全卸载_手感细腻,外观出色,配件良心、华硕TUF GAMING K7 光轴机械键盘...
- 小米手机(MIUI 13)安装Fiddler CA证书
- 三分钟快速了解怎么查询ip地址,怎么更换ip地址!
- 如何通过WWW下载图片 学习笔记
- 【无标题】西门子smart触摸屏连接1200PLC
- servlet容器,web容器,spring容器,springmvc容器的区别
- QT的firstblood
- Qt信号与槽机制详解1-创建一个带信号和槽的例子
- 提升百度云速度-下载利器aria2简明配置指南