Android中ActivityManager(AM)的方法解释和几个使用场景介绍
来源:互联网 发布:源站ip地址和域名 编辑:程序博客网 时间:2024/05/16 19:17
1、ActivityManager是众多系统服务中的一种.在程序中获取am实例的方法:
ActivityManager am = context.getSystemService(ACTIVITY_SERVICE); 需要强制转换类型
2、ActivityManager中的几个方法的含义:
1)getRunningAppProcess();该方法返回的是一个RunningAppProcessInfo对象的集合,表示获取当前系统内所有正在运行的进程的相关信息的集合.在此需要特别说明的是,进程是个很大的概念。一个进程中可以包含多个应用程序,在理论上,如果内存足够大,所有应用程序都可以运行行同一个进程内(只是理论而已)。所以如果打印Log的话,可以看到processName类似于应用程序的包名,要避免该容易混淆的误区。
在RunningAppProcessInfo封装对象中,有processName(进程名称),pid(进程id),String [] pkgList(进程内包含的应用程序的字符串数组),importance(进程的优先级)
2)getRunningTasks(int max);该方法返回的是一个RunningTaskInfo对象的集合,表示获取正在运行的任务。其中RunningTaskInfo经常被用到的一个属性就是topActivity,其封装类型是ComponentName对象,通过该对象可以拿到栈顶topActivity的包名(getPackageName())从而拿到运行该任务的应用包名.
调用该API方法时需要在配置文件中声明可以获取任务列表的权限:<uses-permission android:name="android.permission.GET_TASKS" />
3)通过ActivityManager还可以获取当前系统运行的内存的使用相关的情况.具体的使用参照如下所示:
ActivityManager.MemeoryInfo mi = new ActivityManager.MemoryInfo();
am.getMemoryInfo(mi);
//获取系统剩余的内存空间: long availNum = mi.availMem;
//获取系统所有的内存空间: long totalNum = mi.totalMem;
4)getRunningService(int maxNum)该方法返回的是目前设备上正在运行的服务,参数表示返回的服务的一个最大数,返回值为RunningServiceInfo对象的集合.
几个可能用到的场景:
1)曾经做过个小Demo,其中有个需求就是,列出应用中所有安装的应用程序,用户可以点击任一一个应用程序进行锁定,设置其加锁。也就是说的程序锁的概念。
在这个需求当中,首要要考虑的就是用户打开应用程序是不确定的,时间也是不确定的。所以,如果要给特定的应用程序加锁,只能是在后台开启一个服务,该服务要完成的任务就是不断的扫描用户的操作,获取当前的运行的最新的任务,如果一旦发现设置的特定的应用程序被运行了,就强制将用户操作进行拦截,弹出输入密码的界面,判断密码对错。密码正确开启程序。服务在后台不断扫描的时候就要用到ActivityManager的getRunningTask(),通过ComponmentName获取包名(getPackage())进行比较.
2)该例子和第一个差不多,但是有点变态。如果有人想使坏,在设备上不让某个特定的应用程序启动。可以用到上面提到的方法。检测用户动作,如果是特定的应用包名,强制应用跳转至桌面,也就达到了不让应用启动的目的。
熟悉Android都应该知道,ActivityManager和PackageManager经常一起出现,也最容易联系起来。
下次继续说一下PackageManager的常用方法和例子.
0 0
- Android中ActivityManager(AM)的方法解释和几个使用场景介绍
- Android中ActivityManager的使用案例
- Android中ActivityManager的使用案例
- Android的 PackageManager 和ActivityManager的功能介绍
- FLASH中场景切换的几个方法
- android ActivityManager的一些使用
- Android的PackageManager和ActivityManager
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用(三)
- PackManager和ActivityManager的功能介绍
- 使用ActivityManager的forceStopPackage方法结束进程
- 使用ActivityManager的forceStopPackage方法结束进程
- Handler中post方法的调用流程和使用场景
- Handler中post方法的调用流程和使用场景
- Android ActivityManager常用方法
- Android 框架Dileber :一、ActivityManager的使用
- Android 获取内存信息---ActivityManager的使用
- Redis的数据结构和使用场景介绍
- Android AM命令行安装和启动程序的方法
- HDU 4884 TIANKENG’s rice shop(模拟)——BestCoder Round #2
- 事件——JavaScript高级程序设计笔记(10)
- BPM那些事儿——开源BPM引擎
- 使用自定义聚集函数来实现分组合并字符串
- nginx学习笔记
- Android中ActivityManager(AM)的方法解释和几个使用场景介绍
- 设计模式学习之--单例模式
- cocos2d js 使用 cocos studio 生成的合图
- HDU 3016 Man Down(线段树区间单点查询+DP)
- Oracle和mysql的一些简单区别
- pem证书
- Tcp重传
- MFC WORD void*输出
- Android init进程分析——学习笔记