android中进程管理
来源:互联网 发布:分析软件 编辑:程序博客网 时间:2024/06/09 15:15
android中进程管理
- 1.进程也是通过ActivityManager来获取的,通过调用getRunningAppProcesses方法,就可以获取到正在运行的进程列表.
2.遍历整个进程列表,我们可以获取进程的信息RunningAppProcessInfo info,我们可以直接通过进程信息对象的成员变量获取其中的信息,代码如下:
info.processName //当前进程的应用包名info.pid //进程id号
3.通过进程的id号,我们就可以获取进程的内存占用等信息,当然我们需要一个PackageManager对象,代码如下:
PackageManager pm = ctx.getPackageManager();int[] pids = new int[]{info.pid};//根据进程id获取memInfo,传递几个id就会给几个memoryInfoMemoryInfo[] memInfo = am.getProcessMemoryInfo(pids );memInfo[0].getTotalPrivateDirty();//获取当前进程"弄脏的"占用的内存数,该方法返回的内存大小是以KB为单位的
- 4.通过包管理器和相应的包名我们又可以获取到应用程序的信息,代码如下:
Drawable icon = pm.getApplicationIcon(packageName);//获取当前进程的Icon
ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
String appName = appInfo.loadLabel(pm).toString();//进程名称
if((appInfo.flags & ApplicationInfo.FLAG_SYSTEM)!=0){//通过应用的flags值与系统flag按位相与可以知道当前应用是否为系统应用
taskInfo.setSysProc(true);//系统进程
}else{
taskInfo.setSysProc(false);//用户进程
}- 通过判断应用程序是否是系统应用,来判断当前进程是否为系统进程
5.当然这其中会有一些小问题,由于某些进程应用是使用C语言写的,我们无法获取到应用的图标,也无法获取到当前应用的应用名称,我们只能使用包名代替应用名称,而图标我们自己定义一个特定的图标即可.处理代码如下:
taskInfo.setIcon(ctx.getResources().getDrawable(R.drawable.ic_launcher));taskInfo.setAppName(packageName);taskInfo.setSysProc(true);//我们一般将C语言程序定义为系统程序
- 6.如何清理进程
- 只需要使用ActivityManager的杀死后台进程的方法即可,代码如下:
am.killBackgroundProcesses(taskInfo.getPackageName()); - 该方法只能清理掉后台进程,前台前台进程/可见进程/系统进程是无法清理的,但是为了用户能有一个更好的体验,我们不得不将用户点击的所有进程全部”清理掉”(从显示列表中移除)
- 当然我们还可以完成锁屏自动清理,这时我们就需要开启服务,并在服务中注册一个屏幕锁定的广播接收者,当收到锁屏广播时清理进程.
- 隐藏系统进程也是一个不错的方法,实现起来也更为方便,只需要在显示的ListView的Adapter的getCount方法中返回用户进程的数量就可以了.**
- 只需要使用ActivityManager的杀死后台进程的方法即可,代码如下:
2 0
- android中进程管理
- Android中进程管理
- android 进程管理
- Android进程管理详解
- Android进程管理详解
- Android进程的管理
- android的进程管理
- Android进程内存管理
- android 自动管理进程
- Android进程管理
- Android之进程管理
- Android进程管理
- Android进程管理详解
- Android进程管理详解
- android进程内存管理
- Android进程管理详解
- Android进程管理(详解)
- Android进程管理学习
- IOS开发网络篇—HTTP协议
- android系统的启动流程
- css3里面的奇淫怪技
- APK的安装流程及PackageManagerService源码解析&静默安装
- iOS开发网络篇—GET请求和POST请求
- android中进程管理
- 2015 ACM Amman Collegiate Programming Contest 简要题解。
- CSS 神奇的border(一)
- IOS开发网络篇—数据安全
- ubuntu 安装最新版docker
- java简单取款机
- ubuntu 下使用docker 运行mysql
- 集合知识
- ANT中的SSHEXEC和SCP任务用法