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 block
			e.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 {
				
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傅荣康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值