Android清理设备内存详细完整示例(二)
来源:互联网 发布:mac的airplay在哪里 编辑:程序博客网 时间:2024/05/01 05:17
MainActivity如下:
package cc.c;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.List;import android.app.Activity;import android.app.ActivityManager;import android.app.ActivityManager.MemoryInfo;import android.app.ActivityManager.RunningAppProcessInfo;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;/** * Demo描述: * 清理手机内存 * * 参考资料: * 1 http://blog.30c.org/1816.html * 2 http://www.cnblogs.com/helloandroid/archive/2011/10/14/2212334.html * Thank you very much * * 注意权限: * <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> * */public class MainActivity extends Activity {private TextView mTotalMemoryTextView;private TextView mAvailMemoryTextView;private Button mCleanButton;private TextView mCleanInfoTextView;private ActivityManager mActivityManager;private StringBuffer mCleanInfoStringBuffer;private long availMemory;private long totalMemory;private List<RunningAppProcessInfo> mRunningAppProcessInfoList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}private void init() {mCleanInfoStringBuffer = new StringBuffer();mActivityManager=(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);mTotalMemoryTextView = (TextView) findViewById(R.id.totalMemoryTextView);mAvailMemoryTextView = (TextView) findViewById(R.id.availMemoryTextView);mCleanInfoTextView = (TextView) findViewById(R.id.cleanInfoTextView);mCleanButton = (Button) findViewById(R.id.cleanButton);totalMemory = getTotalMemory();availMemory = getAvailMemory();mTotalMemoryTextView.setText(totalMemory + "MB");mAvailMemoryTextView.setText(availMemory + "MB");mCleanButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {RunningAppProcessInfo runningAppProcessInfo=null;mRunningAppProcessInfoList= mActivityManager.getRunningAppProcesses();//List<ActivityManager.RunningServiceInfo> serviceInfos = mActivityManager.getRunningServices(100);if (mRunningAppProcessInfoList != null) {for (int i = 0; i < mRunningAppProcessInfoList.size(); ++i) {runningAppProcessInfo= mRunningAppProcessInfoList.get(i);// 一般数值大于RunningAppProcessInfo.IMPORTANCE_SERVICE// 的进程即为长时间未使用进程或者空进程// 一般数值大于RunningAppProcessInfo.IMPORTANCE_VISIBLE// 的进程都是非可见进程,即在后台运行if (runningAppProcessInfo.importance > RunningAppProcessInfo.IMPORTANCE_VISIBLE) {String[] pkgList = runningAppProcessInfo.pkgList;for (int j = 0; j < pkgList.length; ++j) {mActivityManager.killBackgroundProcesses(pkgList[j]);mCleanInfoStringBuffer.append(pkgList[j] + " is killed...\n");mCleanInfoTextView.setText(mCleanInfoStringBuffer.toString());}}}} //再次获得剩余内存以计算清理值mCleanInfoStringBuffer.append("共清理:"+(getAvailMemory() - availMemory) + "MB");mCleanInfoTextView.setText(mCleanInfoStringBuffer.toString());mAvailMemoryTextView.setText(getAvailMemory() + "MB");}});}private long getTotalMemory() {//系统的内存信息文件String filePath = "/proc/meminfo";String lineString;String[] stringArray;long totalMemory = 0;try {FileReader fileReader = new FileReader(filePath);BufferedReader bufferedReader = new BufferedReader(fileReader,1024 * 8);//读取meminfo第一行,获取系统总内存大小lineString = bufferedReader.readLine();//按照空格拆分stringArray = lineString.split("\\s+");//获得系统总内存,单位KBtotalMemory = Integer.valueOf(stringArray[1]).intValue();bufferedReader.close();System.out.println("------> lineString=" + lineString+ ",stringArray[0]=" + stringArray[0] + ",stringArray[1]="+ stringArray[1] + ",stringArray[2]=" + stringArray[2]);} catch (IOException e) {}return totalMemory / 1024;}private long getAvailMemory() {MemoryInfo memoryInfo = new MemoryInfo();mActivityManager.getMemoryInfo(memoryInfo);return memoryInfo.availMem / (1024 * 1024);}}
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" > <TextView android:id="@+id/totalTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="系统内存:" android:textSize="25sp" android:textColor="#1cf109" /> <TextView android:id="@+id/totalMemoryTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/totalTextView" android:textSize="25sp" android:textColor="#1cf109" /> <TextView android:id="@+id/availTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/totalTextView" android:text="可用内存:" android:textSize="25sp" android:textColor="#5c0169" /> <TextView android:id="@+id/availMemoryTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/totalTextView" android:layout_toRightOf="@id/availTextView" android:textSize="25sp" android:textColor="#5c0169" /> <Button android:id="@+id/cleanButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/availMemoryTextView" android:textSize="25sp" android:text="清理内存" /> <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/cleanButton" > <TextView android:id="@+id/cleanInfoTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </ScrollView></RelativeLayout>
PS:更好的方式请参见Android清理设备内存详细完整示例(一)
1 0
- Android清理设备内存详细完整示例(二)
- Android清理设备内存详细完整示例(一)
- Android利用Volley异步加载数据完整详细示例(二)
- Android定时发送短信完整详细示例
- Android文件存储详细完整示例
- Android显示GIF动画完整示例(二)
- Android中AutoCompleteTextView完整示例(二)
- CountDownTimer完整详细示例
- Android利用Volley异步加载数据完整详细示例(一)
- Android侧滑菜单完整详细示例(精装版)
- Android侧滑菜单完整详细示例(改进版)
- Android侧滑菜单完整详细示例(基础版)
- Android本地缓存DiskLruCache完整详细学习示例
- JNI入门完整详细示例
- android手机内存清理
- android 内存清理
- Android 内存清理
- (转)android 内存清理
- UVA 10025 - The ? 1 ? 2 ? ... ? n = k problem
- 一些知识点的初步理解_9(独立成分分析-ICA,ing...)
- 公告:CSDN博客频道支持Windows Live Writer离线写博客啦
- 联想Y560笔记本安装苹果MAC OS X 10.8 Mountain Lion
- Android源码下的系统定制
- Android清理设备内存详细完整示例(二)
- maven war包的plugin配置
- Struts2中Action配置中的各项默认值
- 传记
- 个人学习-Struts2
- ObjectARX学习笔记(十九)--如何设置扩展字典的数据AcDbDictionary
- 关于Windows高DPI
- android程序奔溃异常捕捉
- C#中双问号(??)在检测Null方面的带来的方便