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

ActivityManager

android.app包,含有6个内部类:

MemoryInfoProcessErrorStateInfoRecentTaskInfoRunningAppProcessInfoRunningServiceInfoRunningTaskInfo

先从ActivityManager API下手。

Constants

META_HOME_ALTERNATE

主activity中的标签值

MOVE_TASK_NO_USER_ACTION

对于用户策动的活动,当前activity不会收到提示

MOVE_TASK_WITH_HOME

将后面的任务立即移动到前面

RECENT_IGNORE_UNAVAILABLE

提供一份不包含任何当前任务的列表,这些任务对于用户是不可见的

RECENT_WITH_EXCLUDED

返回所有的任务

Methods

public boolean clearApplicationUserData ()

清楚用户数据

public void dumpPackageState (FileDescriptor fd, String packageName)

获取相应包名对应的apk的各种状态信息

public ConfigurationInfo getDeviceConfigurationInfo ()

获取设备配置信息

public int getLargeMemoryClass ()

当一个应用程序在一个大的堆栈空间里运行时,估算当前设备中每一个应用内存片段的值

public int getLauncherLargeIconDensity ()

Lancher启动器的图标像素密度

public int getLauncherLargeIconSize ()

启动器图标大小

public int getLauncherLargeIconSize ()

当前设备每个应用的内存分类,就是内存的底线。低于这个值应用就会崩溃。

public void getMemoryInfo (ActivityManager.MemoryInfo outInfo)

当前系统的内存信息

public static void getMyMemoryState (ActivityManager.RunningAppProcessInfo outState)

返回调用者进程的全局内存状态信息。

public MemoryInfo[] getProcessMemoryInfo (int[] pids)

进程所使用的内存信息

public List getProcessesInErrorState ()

当系统发生错误的时候,获取当前运行的一些进程的信息

public List getRecentTasks (int maxNum, int flags)

用户启动的任务列表

public List getRunningAppProcesses ()

当前设备运行着的应用进程信息

public PendingIntent getRunningServiceControlPanel (ComponentName service)

返回一个PendingIntent,该PendingIntent会启动一个控制面板,里面会显示当前系统运行的一系列服务。

public List getRunningServices (int maxNum)

当前运行的服务信息

public List getRunningTasks (int maxNum)

当前系统运行的任务信息

public boolean isLowRamDevice ()

是否是低内存的设备

public static boolean isRunningInTestHarness ()

判断设备是否运行在测试框架中

public static boolean isUserAMonkey ()

判断当前设备是否被Monkey乱点中

public void killBackgroundProcesses (String packageName)

杀死对应包的后台进程

public void moveTaskToFront (int taskId, int flags, Bundle options)

public void moveTaskToFront (int taskId, int flags)

讲给定的id对应的任务移动到任务栈队列的最前面。

public void restartPackage (String packageName)

在API 8中已废除

Nested class

MemoryInfo

通过getMemoryInfo(ActivityManager.MemoryInfo)获得该对象,可以用来检索有效的内存信息

Fields

public long availMem

系统中的可见内存

public boolean lowMemory

系统判断自己是否处于低内存的情况

public long threshold

当内存太低,开始杀死后台服务和其他非外来的进程时,内存的临界值

public long totalMem

内核中所有内存数

ProcessErrorStateInfo

在发生错误时,检索内存中的有关信息

Constans:

int CRASHED:奔溃

int NOT_RESPONDING:无回应

int NO_ERROR:0.状况码,无错误

Fields

public int condition:进程中的状态码

public byte[] crashData:(已经被弃用),空值

public String longMsg:一个表述错误状态的长信息

pubic int pid:进程id

pubic String processName:发生错误或奔溃的进程的进程名称

public String shortMsg:错误码的缩写

public String stackTrace:错误发生时的堆栈跟踪信息

public String tag:与错误有关的activity名

public int uid:用户id

RecentTaskInfo

用户最近访问和启动的任务信息

Fields

public Intent baseIntent:启动任务的原始Intent,可以用它重启任务或者将当前任务移动到任务列表的最前面

public CharSequence description:描述任务上次的状态

public int id:唯一标识当前运行的任务

public ComponentName origActivity:intent启动的实体控件

public int persistentId:任务的永久id号,不管该任务有没有运行

RunningAppProcess

与正在运行的进程有关信息可以通过该类获得。

Constants

IMPORTANCE_BACKGROUND:importance变量的值之一。处于后台,但是仍然消耗资源的进程

IMPORTANCE_EMPT:importance变量的值之一。空进程

IMPORTANCE_FOREGROUND:importance变量的值之一。处于用户界面的进程。

IMPORTANCE_PERCEPTIBLE:同上。仍然运行着某些对用户有用的的东西

IMPORTANCE_SERVICE:同上。该进程包含仍在运行的服务

IMPORTANCE_VISIBLE:同上。运行某些对用户可见的东西,但不是立即显示在UI界面上,

REASON_PROVIDER_IN_USE:importanceReasonCode变量的值之一。应用的content provider中正被其他进程调用

REASON_SERVICE_IN_USE:同上。

REASON_UNKNOWN:同上。无特殊原因

Fields

public int importance:重要性等级

public int importanceReasonCode:重要原因code

public ComponentName importanceReasonComponent:到当前进程中使用的组件名

public int importanceReasonPid:进程客户端其他进程的进程id。

public int lastTrimLevel:报告给进程最后内存的等级

public int lru:近期最少使用算法,即为importance进行排序。

public int pid:进程id

public String[] pkgList:该进程加载的所有包名

public String processName:与当前对象相关的进程名称

public int uid:用户id

RunningServiceInfo

当前系统中运行的特殊服务

Constants

FLAG_FOREGROUND:前台进程

FLAG_PERSISTENT_PROCESS:持续进程

FLAG_STARTED:已启动

FLAG_SYSTEM_PROCESS:核心系统进程

Fields

public long activeSince:第一次启动的时间

public int clientCount:连接到该服务的客户端数量

public int clientLabel:客户端标签

public String clientPackage:客户端包名

public int crashCount:在服务运行过程中奔溃的次数

public int flags:运行标志

public boolean foreground:判断是否位于前端UI界面上

public long lastActivityTime:最后的活动时间

public int pid:进程id

public String process:服务所在的进程名

public long restarting:重新启动的时间,如果非空,代表该服务当前不在运行。等待一段时间后重启。

public ComponentName service:服务组件

public boolean started:是否已经启动

public int uid:用户id

RunningTaskInfo

当前在系统中运行的特定任务信息,这些任务不是意味着有进程活动的任务,而是简单的标识用户已经离开该任务,但是没有关闭,但是当前系统可能会杀死该进程,只支持它的状态,等用户返回后重新启动。

Fields

public ComponentName baseActivity:任务中第一次启动的activity.

public CharSquence description:任务当前状态的描述

public int id:任务id

public int numActivities:当前任务中活跃的activity数

public in numRunning:当前任务中运行的activity数(没有停止和持续的activity)

public Bitmap thumbnail:当前状态的缩略图

public ComponentName topActivity:任务历史栈最上层的activity.

总结

这一篇文章从ActivityManager讲起,逐渐讲解了其中的6个内部类,代表程序运行过程中所涉及到的各个进程、app、service、task的信息。对ActivityManager所管理的内容有了初步的了解。

Android中ActivityManager学习笔记相关推荐

  1. Android中canvas学习笔记

    第三届互联网大会结束时间不长,却给我的触动很大,看到了很多的AI(人工智能),或许将来的某一天很多职业会被AI替代,包括80%的程序员,我们做为社会中的一份子,只有不断的提升自己,居安思危,才不会被这 ...

  2. android中Mms学习笔记

    一.UI学习 1.从Lancher进入信息app首先展示的是activity为CoversationList,该类继承ListActivity和接口DraftCache.OnDraftChangedL ...

  3. android中Mms学习笔记——信息发送流程(一)

    一.对于ComposeMessageActivity中确认接受者信息有效性的(confirmSendMessageIfNeeded())流程的分析,最后调用sendMessage(). 进入该法后做如 ...

  4. Android编译及编译脚本、Android构建基础学习笔记

    Android编译及编译脚本.Android构建基础学习笔记 Android编译及编译脚本 概述 Android.mk转换成Android.bp 例子(简单Android.mk文件转Android.b ...

  5. Android开发技术学习笔记

    目标:全面学习知识点,能理解原理,多实战练习并做笔记与总结学习心得 Android开发技术学习笔记记录如下: Android开发Google的官网https://developer.android.g ...

  6. Android V7包学习笔记更新中.....

    关于V4 V7 V13 VX包介绍转自这里 1, Android Support V4, V7, V13是什么? 本质上就是三个java library. 2, 为什么要有support库? 如果在低 ...

  7. android入门知识,android基础知识学习笔记

    该笔记主要是通过学习<第一行代码>中的各种知识点以及实例,进行的个人学习记录,感谢图书作者郭霖大神 android:label 指定活动中标题栏的内容,标题栏是显示在活动最 顶部的* 标题 ...

  8. Android之内核学习笔记

    0.Android系统启动 <Android系统启动流程 -- bootloader> <The Android boot process from power on> < ...

  9. android新闻客户端实验报告,Android 新闻客户端学习笔记

    学习了新闻客户端开发后,有很多是通用的,就把客户端用到的一些做个笔记,已备以后使用,主要用到的知识点有: 1.  Android网络编程 2.  Android中BaseAdapter的使用 3.   ...

最新文章

  1. python对文件的_python对文件的读写
  2. 华为于璠:新一代AI开源计算框架MindSpore的前世与今生 | AI ProCon 2019
  3. vscode 逗号不换行_在VSCode里面配置Vim正确姿势(细节解析)
  4. oracle之alter学习笔记
  5. Struts2 datetimepicker 日期月份乱码解决
  6. docker容器的本地局域网yum源优化
  7. 【DI专题】在 DI 脚本文件中调用存储过程
  8. 8266串口调试助手_200行Python代码实现串口调试助手(2) 界面构建
  9. 三层架构与设计模式思想部署企业级数据库业务系统开发
  10. ajax为什么返回html标签,AJAX与特定值后返回的HTML标签
  11. 互联网晚报 | 8月21日 星期六 | 中国电信正式在A股上市;呷哺呷哺将关闭200家亏损门店;个人信息保护法表决通过...
  12. 都是❤️两层循环❤️的冒泡排序,选择排序,插入排序该怎么区分
  13. 老兵的十年职场之路(二)
  14. 大数据开发离线计算框架知识点总结
  15. PhotoShop(2)ps常用工具和操作,ps 切图,cutterman下载使用
  16. 计算机硬盘能影响速度吗,BitLocker对电脑硬盘性能的影响
  17. 浅谈大数据的过去、现在和未来
  18. 赶上了秋招的末班车,抓住了秋招的尾巴,成功上岸了
  19. Final IK详解
  20. /etc/hosts 详解

热门文章

  1. 【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 )
  2. 【组合数学】生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多项式系数相关 )
  3. OpenCV+Qt+CMake安装+十种踩坑
  4. 1063. Set Similarity (25)
  5. 8 -- 深入使用Spring -- 5...1 启用Spring缓存
  6. Fedora安装Texlive2013时出现Can't locate Digest/MD5.pm的解决方法
  7. android:ellipsize实现跑马灯效果总结
  8. 自定义控件:广告内容后期加载。以及NamingContainer层次的应用
  9. 哈希表(散列查找)(c/c++)
  10. vue-cli项目打包多个与static文件同级的静态资源目录(copy-webpack-plugin插件的使用)...