如何建站,适合前端开发的电脑推荐,qq群排名优化,长沙地铁最新消息在Android中ActivityManager主要用于和系统中运行的Activities进行交互。在本篇文章中#xff0c;我们将对ActivityManager中的API进行研究使用。 在ActivityManager存在如下几个内部类#xff1a; 1、ActivityManager.MemoryInfo:此类用于描述系统内存信息#xff0c;可以通… 在Android中ActivityManager主要用于和系统中运行的Activities进行交互。在本篇文章中我们将对ActivityManager中的API进行研究使用。 在ActivityManager存在如下几个内部类 1、ActivityManager.MemoryInfo:此类用于描述系统内存信息可以通过ActivityManager的getMemoryInfo获取。在该类中通过字段 availMem 和totalMem可以获取系统当前可用内存和系统总内存。 2、ActivityManager.RunningAppProcessInfo:用于描述一个正在运行的进程的信息。常用属性有inportance、pid、processName、uid等。 3、ActivityManager.RunningServiceInfo:用于描述正在运行的服务的信息。 4、ActivityManager.RunningTaskInfo:用于描述正运行在系统中的task的信息。不仅仅包括含有正在运行的进程的Task还包含了只保留了状态用于用户重启的task。 5、ActivityManager.RecentTaskInfo:用于描述最近访问过的task信息。 除了这些内部类还有一些常用的方法比如 1、getMemoryInfo(ActivityManager.MemoryInfo outInfo) 2、getProcessMemoryInfo(int[] pids) 3、getRecentTasks(int maxNum,int flags) 4、getRunningAppProcesses(); 5、getRunningService(int maxNum) 6、getRunningTasks(int maxNum); 7、killBackgroundProcess(String packageName) 等等。 下面我们通过一个案例来说明他们的具体用法具体效果图如下 在此案例中我们完成将扫描出所有的正在运行的进程并对其进行清理内存。 首先我们先看祝布局文件 LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalLinearLayoutandroid:layout_widthmatch_parentandroid:layout_height48dpandroid:orientationhorizontalButtonandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1android:gravitycenterandroid:onClickstartScanandroid:text扫描android:textSize18sp /Buttonandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1android:gravitycenterandroid:onClickstartCleanandroid:text清理android:textSize18sp //LinearLayoutTextViewandroid:idid/memoryInfoandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:gravitycenterandroid:padding10dpandroid:textstring/hello_worldandroid:textSize14sp /FrameLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentListViewandroid:idid/mylistandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:scrollbarStyleoutsideOverlay /LinearLayoutandroid:idid/progressContainerandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalandroid:gravitycentercom.github.lzyzsd.circleprogress.ArcProgressandroid:idid/progressandroid:layout_width80dpandroid:layout_height80dp/TextViewandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:idid/progressTextandroid:textSize18spandroid:gravitycenter//LinearLayout/FrameLayout/LinearLayout 其次在Activity中定义了一个异步任务类用于处理正在运行中的进程其代码如下 private class ScanRunningProcess extends AsyncTaskVoid,Integer,ListProcessInfo{Overrideprotected ListProcessInfo doInBackground(Void... voids) {ListActivityManager.RunningAppProcessInfo list activityManager.getRunningAppProcesses();publishProgress(0,list.size());ListProcessInfo processInfos new ArrayList();for(int i0;ilist.size();i){publishProgress(i1,list.size());ActivityManager.RunningAppProcessInfo appProcessInfolist.get(i);ProcessInfo info new ProcessInfo();info.setProcessName(appProcessInfo.processName);//内存信息Debug.MemoryInfo[] memoryInfosactivityManager.getProcessMemoryInfo(new int[]{appProcessInfo.pid});info.setMemory(memoryInfos[0].getTotalPrivateDirty()*1024);processInfos.add(info);}return processInfos;}Overrideprotected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);int curProgress values[0];int totalProgress values[1];progressText.setText(String.format(扫描进度%d/%d,curProgress,totalProgress));arcProgress.setMax(100);int progress (int)(curProgress*100.0/totalProgress);arcProgress.setProgress(progress);}Overrideprotected void onPostExecute(ListProcessInfo list) {super.onPostExecute(list);progressContainer.setVisibility(View.GONE);mData.clear();mData.addAll(list);adapter.notifyDataSetChanged();}Overrideprotected void onPreExecute() {super.onPreExecute();progressContainer.setVisibility(View.VISIBLE);progressText.setText(正在扫描……);}
} 清理内存的关键代码如下 for(ProcessInfo info : mData) {activityManager.killBackgroundProcesses(info.getProcessName());cleanMemory info.getMemory();} 作者 杰瑞教育 出处 http://blog.csdn.net/jerehedu 版权声明本文版权归烟台杰瑞教育科技有限公司和CSDN共有欢迎转载但未经作者同意必须保留此段声明且在文章页面明显位置给出原文连接否则保留追究法律责任的权利。 技术咨询