Android实现任务管理器
任务管理器可以实现的功能有:
1.查看当前系统下运行的所有的进程
2.可以查看每个进程的进程号、版本号以及内存占用情况
3.杀死进程(可以杀死全部进程或者杀死指定的进程)
4.查看系统剩余内存
效果图: 杀死全部进程
实现思路:
ActivityManager类可以获取到当前系统的所有进程,以及每个进程的信息,也可以杀死某个进程,
ActivityManager.getRunningAppProcesses(); 获取系统的所有进程
ActivityManager.getProcessMemoryInfo(pids); 根据进程号获取每个进程的内存占用情况
ActivityManager.restartPackage(processName) ; 根据进程的包名杀死某个进程
PackageManager可以根据包名获取程序的图标、版本号、名字、权限、签名
核心代码:
/** 获取所有进程及用户 的进程*/protected void initData() {runningAppProcessInfos =ActivityManager.getRunningAppProcesses(); //获取所有的进程userRunningAppProcessInfos = new ArrayList<ActivityManager.RunningAppProcessInfo>();//获取用户的进程for(int i = 0; i< runningAppProcessInfos.size();i++){if("system".equals(runningAppProcessInfos.get(i).processName)||"android.process.media".equals(runningAppProcessInfos.get(i).processName)||"android.process.acore".equals(runningAppProcessInfos.get(i).processName)){continue;}userRunningAppProcessInfos.add(runningAppProcessInfos.get(i));}}
注:杀死全部进程实际上杀死的是用户的所有进程,系统进程是无法杀死的,所以这里要获取到用户的所有的进程。
/** 获取某个进程占用的内存信息 */ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);int[] pids = {userRunningAppProcessInfos.get(position).pid};android.os.Debug.MemoryInfo[] memoryInfos = am.getProcessMemoryInfo(pids);int memorysize = memoryInfos[0].getTotalPrivateDirty();tv_app_memory.setText("内存占用为 "+ memorysize +" KB");
public class TaskInfo {Context context ;PackageManager pm ;public TaskInfo(Context context) {this.context = context;pm = context.getPackageManager();}/** 根据包名 查询 图标*/public Drawable getAppIcon(String packname){try {ApplicationInfo info = pm.getApplicationInfo(packname, 0); return info.loadIcon(pm);} catch (NameNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();return null;}}/**获取程序的版本号 */public String getAppVersion(String packname){try {PackageInfo packinfo = pm.getPackageInfo(packname, 0);return packinfo.versionName;} catch (NameNotFoundException e) {e.printStackTrace();return null;}}/** 获取程序的名字 */public String getAppName(String packname){try {ApplicationInfo info = pm.getApplicationInfo(packname, 0); return info.loadLabel(pm).toString();} catch (NameNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();return null;}}/** 获取程序的权限*/public String[] getAppPremission(String packname){try {PackageInfo packinfo = pm.getPackageInfo(packname, PackageManager.GET_PERMISSIONS);//获取到所有的权限 return packinfo.requestedPermissions;} catch (NameNotFoundException e) {e.printStackTrace();return null;}}/** 获取程序的签名 */public String getAppSignature(String packname){try {PackageInfo packinfo = pm.getPackageInfo(packname, PackageManager.GET_SIGNATURES);//获取到所有的权限 return packinfo.signatures[0].toCharsString();} catch (NameNotFoundException e) {e.printStackTrace();return null;}}
}
/** 杀死所有进程 */private void killAll() {for (int i = 0 ; i< userRunningAppProcessInfos.size();i++){System.out.println(userRunningAppProcessInfos.get(i).processName);activitymanager.restartPackage(userRunningAppProcessInfos.get(i).processName);}// 更新显示的界面 pd.show();new Thread(){@Overridepublic void run() {initData();Message msg = new Message();msg.what = GET_RUNNING_APP_FINISH;hander.sendMessage(msg);}}.start();}/** 杀死选择的进程 */private void killSelected() {for (int i=0 ;i < isselected.size(); i++){if(isselected.get(i)){ //如果用户也选中则返回true//终止一个activity 需要用到 activitymanageractivitymanager.restartPackage(userRunningAppProcessInfos.get(i).processName);}}//更新listview的显示 pd.show();new Thread(){@Overridepublic void run() {initData();Message msg = new Message();msg.what = GET_RUNNING_APP_FINISH;hander.sendMessage(msg);}}.start();}
/** 获取系统的剩余内存*/ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);MemoryInfo outInfo = new ActivityManager.MemoryInfo();am.getMemoryInfo(outInfo);long availMemorySize = outInfo.availMem;String strMemorySize = availMemorySize/1024/1024 + "MB";
您想快速达成您的目标和实现梦想吗?请加QQ:673220883 每天为您提供了大量励志,视频,销售,管理等-经典文章,免费学习。此QQ空间已改变了千万人的命运。陈安之和您一起开始您的梦想之旅!陈安之老师全国课程报名热线:131 6187 6870
精彩分享: 如果你现在没有目标,对未来很迷茫、来看下
精彩分享: 俞洪敏:一辈子只做一件事 不要想太多
精彩分享: 男人的这一百个秘密,我不说你一辈子也不可能知道!
精彩分享: 人临终前最遗憾的25件事,别让这些遗憾 变成你的遗憾
Android实现任务管理器相关推荐
- 使用air进行移动app开发常见功能和问题(二)
1. Air如何判断android.ios 平台网络连接状态? Android,使用as3原生api: [javascript] view plaincopy if(NetworkInfo.isSu ...
- Flutter (四) 基础 Widgets、Material Components Widget 全面介绍
基础 Widgets 重要概念 一切皆组件.Flutter 所有的元素都是由组件组成.比如一个布局元素.一个动画.一个装饰效果等. 容器 Container 容器组件 Container 包含一个子 ...
- Flutter 入门学习(五)— Material Design风格组件
文章目录 1. 概述 2. App结构和导航组件 2.1 MaterialApp(应用组件) 2.1.1 设置主页 2.1.2 路由处理 2.1.3 自定义主题 2.2 Scaffold(脚手架组件) ...
- Service+WebSocket实现实时定位
背景 最近遇到了这样一个需求:实现一个实时定位功能,并将定位到的信息上传至服务器. 思路 首先实现一个长生命周期的Service服务: 其次通过BroadcastReceiver监听系统广播,当Ser ...
- 情书生成器代码_微软飞行模拟器是对航空的情书
情书生成器代码 The newest entry in the nearly 40-year-old game series just may be the best one yet. 近40年历史的 ...
- 使用AIR进行移动APP开发常见功能和问题(下)
1. Air如何判断android.ios 平台网络连接状态? Android,使用as3原生api: if(NetworkInfo.isSupported)//只有android支持 Networ ...
- android 平板 切换任务管理器,看谁分身有术 三大平板系统多任务横评
1三大平板系统 谁能"左右互搏"? 喜欢看金庸的网友都知道,"左手画方,右手画圆"的左右互搏术是武学至高境界,只有少数武林奇才能掌握这门"多任务功夫& ...
- Android任务管理器
最近参考系统源代码,做了一个任务管理器.具体功能是获取用户的任务列表.活动图标.Activity的缩略图以及恢复任务.关闭任务. 完整的demo已上传到github,代码拙劣,将就看看:https:/ ...
- android一键清理任务,[玩机组出品]全球最小最高效的一键清理任务管理器。仅100......
作为一个进程怎么杀也杀不完的手机系统,安卓系统对于程序运行后台管理不作为一直被人们所诟病.小白们喜欢下载一些"优化大师"来管理手机运存,但是往往事与愿违,安装了他们手机反而变得越来 ...
最新文章
- [设计模式] ------ 模板模式
- java面向对象上机题库_Java面向对象编程上机-练习题汇总
- 【学术篇】2.28测试T2 线段 拓扑排序
- Spring启动的流程
- NAT、远程访问和站点间***集成
- 月薪过万是普遍现象吗?很抱歉,这事大部分人的错觉
- SSD模型物体检测(水下生物识别)
- uniapp路线规划
- NOIP 2017 列队 (线段树动态开点)
- 《大数据时代》读后感(一)
- [虚拟机] 如何让VMware上的虚拟机识别到U盘
- 集成学习——bagging原理及分析
- 新版WordPress网址导航主题模板+自适应WAP
- 匈牙利命名法的衰落和建议
- LTspice快速上手--搭建简单RC电路
- Influxdb自定义数据采样(CQ)
- Redis 的 MOVED 转向与 ASK 转向
- python+java停车场车位管理系统vue+elementui
- 线上电商数据可以为我们带来哪些营销情报
- 区块链智能合约solidity入门 1