安卓系统在长时间使用的情况下,会有很多软件隐藏在后台,时刻消耗着你的系统资源与电池电量,所以我们要关闭不必要的进程。这篇文字非常适合 Andorid开发初学者,出于学习的目的,也为了更好地研究进程保护的机理,我们来打造一款 Android系统加速器,其功能是关闭不必要的软件,关闭没有用的后台服务,同时显示可用内存、总内存以及释放了多少内存。编程分析一个 Android包是一个应用发布,用户能下载并安装,而一个进程是一个底层的代码运行级别的核心进程。通常.apk包里所有代码运行在一个进程里,一个进程对应一个.apk包;然而,进程可以是独立的活动、接收器、服务,或者提供器组件。当某个组件第一次运行的时候,Android就启动了一个进程。默认的,所有的组件和程序运行在这个进程和线程中。
ActivityManager的功能是与系统中所有运行着的 Activity交互提供了接口,主要的接口围绕着运行中的进程信息、任务信息、服务信息等。我们可以用 getRunningAppProcesses()获取进程信息。下面首先需要获取现在正在运行的后台服务,将其放在列表里,核心代码如下。
try { list.clear(); am=(ActivityManager)MainActivity.this.getSystemService(ACTIVITY_SERVICE);// 创建 ActivityManager对象 Final List<RunningAppProcessInfo> l =am.getRunningAppProcesses(); if(l.size()==0)//若没有正在运行的程序 { Toast.makeText(MainActivity.this,"目前没有正在运行的程序! ", Toast.LENGTH_SHORT).show(); return; } //在 ListView上依次显示出每个正在运行程序的信息 for(int i=0;i<l.size();i++) { list.add("第"+i+"项:"+l.get(i).processName+",ID="+l.get(i).pid); }
然后创建好适配器,设置选中菜单监听器,要获取 android MemoryInfo信息,可以使用Debug的函数:
getMemoryInfo(Debug.MemoryInfo memoryInfo)或 ActivityManager的 MemoryInfo[] getProcessMemoryInfo(int[] pids)来实现,单位可以精确到 KB,getAvailMemory() public void onItemClick(AdapterView<?> arg0, View arg1,final int arg2, long arg3) { new AlertDialog.Builder(MainActivity.this).setMessage("是否杀死该进程") .setPositiveButton(" 确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { am.killBackgroundProcesses(l.get(arg2).processName); edittext01.setText(getAvailMemory().toString()); edittext02.setText(getTotalMemory().toString()); if(mem.equals(getAvailMemory().toString())){ Toast.makeText(MainActivity.this," 该 线 程 不 可 以 被 杀 死 ",Toast.LENGTH_LONG).show();}else{ String[] str=l.get(arg2).toString().split(":"); int[] myMempid = new int[] { l.get(arg2).pid}; Debug.MemoryInfo[] memoryInfo = am.getProcessMemoryInfo(myMempid); int memSize = memoryInfo[0].dalvikPrivateDirty; String ProInfo=",内存:"+memSize+"kb"; Toast.makeText(MainActivity.this,"进程已被杀死 ,释放内存: "+memSize+"KB",Toast.LENGTH_LONG).show(); mem=getAvailMemory().toString(); } } }).setNegativeButton(" 取 消 ", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { dialog.cancel() ; } }).create().show() ;
现在我们点击进程列表看看现在运行的进程,获取所有正在运行的后台服务
接下来我们点击要结束的进程,会弹出窗口提示
如果碰到一些被结束掉的进程又马上自动开启的,会有窗口提示
通过测试指定结束相应的进程,可以显示可用内存,后台服务,释放了多少内存,通过结束掉进程可以起到一定的加速作用,小小的 Andorid系统加速器做好了。通过这次编程,学会了一些对系统进程与内存相关的编程操作,由浅入深,为了更好地理解各种应用运行的Android远程监控技术原理,学习将会继续。