任务管理器可以实现的功能有:

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件事,别让这些遗憾 变成你的遗憾

精彩分享: 6个步骤,助你打破聊天尴尬局面,推荐阅读
精彩分享:  告诉自己我可以输,但我绝不放弃
精彩分享: 业务高手不想让别人知道的沟通秘籍
精彩分享: 陈安之教你三十岁前如何挣到五百万,不管男女都花上几分钟进来看完
精彩分享: 乔布斯,不为人知的故事!斯坦福大学演讲
精彩分享: 拖延等于死亡---改变千万人生的一堂课!
精彩分享: 为什么你是一个有才华的穷人?让你受益终身的文章!
精彩分享: 人生就像一杯茶,不会哭一辈子,但总会哭一阵子!

Android实现任务管理器相关推荐

  1. 使用air进行移动app开发常见功能和问题(二)

    1.  Air如何判断android.ios 平台网络连接状态? Android,使用as3原生api: [javascript] view plaincopy if(NetworkInfo.isSu ...

  2. Flutter (四) 基础 Widgets、Material Components Widget 全面介绍

    基础 Widgets 重要概念 一切皆组件.Flutter 所有的元素都是由组件组成.比如一个布局元素.一个动画.一个装饰效果等. 容器 Container 容器组件 Container 包含一个子 ...

  3. Flutter 入门学习(五)— Material Design风格组件

    文章目录 1. 概述 2. App结构和导航组件 2.1 MaterialApp(应用组件) 2.1.1 设置主页 2.1.2 路由处理 2.1.3 自定义主题 2.2 Scaffold(脚手架组件) ...

  4. Service+WebSocket实现实时定位

    背景 最近遇到了这样一个需求:实现一个实时定位功能,并将定位到的信息上传至服务器. 思路 首先实现一个长生命周期的Service服务: 其次通过BroadcastReceiver监听系统广播,当Ser ...

  5. 情书生成器代码_微软飞行模拟器是对航空的情书

    情书生成器代码 The newest entry in the nearly 40-year-old game series just may be the best one yet. 近40年历史的 ...

  6. 使用AIR进行移动APP开发常见功能和问题(下)

    1.  Air如何判断android.ios 平台网络连接状态? Android,使用as3原生api: if(NetworkInfo.isSupported)//只有android支持 Networ ...

  7. android 平板 切换任务管理器,看谁分身有术 三大平板系统多任务横评

    1三大平板系统 谁能"左右互搏"? 喜欢看金庸的网友都知道,"左手画方,右手画圆"的左右互搏术是武学至高境界,只有少数武林奇才能掌握这门"多任务功夫& ...

  8. Android任务管理器

    最近参考系统源代码,做了一个任务管理器.具体功能是获取用户的任务列表.活动图标.Activity的缩略图以及恢复任务.关闭任务. 完整的demo已上传到github,代码拙劣,将就看看:https:/ ...

  9. android一键清理任务,[玩机组出品]全球最小最高效的一键清理任务管理器。仅100......

    作为一个进程怎么杀也杀不完的手机系统,安卓系统对于程序运行后台管理不作为一直被人们所诟病.小白们喜欢下载一些"优化大师"来管理手机运存,但是往往事与愿违,安装了他们手机反而变得越来 ...

最新文章

  1. 如何用#define宏定义多行函数
  2. sas中的sql(2) 行选择 、限制重复、条件运算符、运行前语法检查、feedback、count...
  3. Vuex-全局状态集中式管理神器,做vue项目不知道Vuex真的out了
  4. 从条纹边框的实现谈盒子模型
  5. 两条路,此人如何问甲乙问题?才能走向京城
  6. python及pycharm
  7. Android高级-Android操作SQL数据管理,增删改查
  8. windows源码安装apache2 win安装apache 阿帕奇服务器
  9. 沙洋有几个微服务群_QQ群控系统强力黑科技,助力你实现自动化获客
  10. day03-PyCharm的设置与使用
  11. 初中级工程师是否应急于学习html5?
  12. DedeCMS5.5 调用当前内容页TAG标记的办法
  13. 摄氏度和开氏度的换算_k与摄氏度的换算(摄氏度与开氏度换算)
  14. pb语言是什么计算机语言,pb编程语言排行榜_世界编程语言排行榜 搜狗百科
  15. 解决local class incompatible stream classdesc serialVersionUID = 7170114032608506842, local class seri
  16. SEO过程中外链的误区
  17. [渝粤教育] 天津师范大学 教育心理学(唐卫海) 参考 资料
  18. Java项目:基于java+ssm生鲜超市进销存管理系统--计算机毕业设计
  19. 淘宝API接口(item_history_price-获取商品历史价格信息)
  20. dnx sdk版本dnx-clr-win-x86.1.0.0-beta5无法安装

热门文章

  1. 100多种最佳软件测试工具介绍-2
  2. CVPR2018跟踪算法STRCF原理及代码解析
  3. 【FOC】HALL同步电角度测试
  4. Android 11 固定wifi热点名和密码
  5. 未分配利润、盈余公积、资本公积的区别
  6. STS3下载和安装,STS4升级
  7. CSS之关于弹性盒子 你了解哪些(flex基本属性详解)
  8. Ubuntu下aMule设置
  9. shell 命令 if [ -d filename] 判断文件
  10. Wireshark显示No interfaces found