Android编程实现任务管理器的方法
程序员文章站
2023-12-17 15:31:46
本文实例讲述了android编程实现任务管理器的方法。分享给大家供大家参考,具体如下:
任务管理器可以实现的功能有:
1.查看当前系统下运行的所有的进程
2.可以查看...
本文实例讲述了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 { applicationinfo info = pm.getapplicationinfo(packname, 0); return info.loadlabel(pm).tostring(); } catch (namenotfoundexception e) { // todo auto-generated catch block e.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(){ @override public 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 需要用到 activitymanager activitymanager.restartpackage(userrunningappprocessinfos.get(i).processname); } } //更新listview的显示 pd.show(); new thread(){ @override public 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";
希望本文所述对大家android程序设计有所帮助。