版权声明: https://blog.csdn.net/lfdfhl/article/details/27672913

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;
@Override
protected 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() {
@Override
public 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+");
//获得系统总内存,单位KB
totalMemory = 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清理设备内存具体完整演示样例(一)

Android清理设备内存具体完整演示样例(二)的更多相关文章

  1. Android清理设备内存具体完整演示样例(一)

    MainActivity例如以下: package come.on; import android.app.Activity; import android.content.Context; impo ...

  2. FutureTask使用完整演示样例

    MainActivity例如以下: package cc.cv; import java.util.concurrent.FutureTask; import android.os.Bundle; i ...

  3. Android利用Volley异步载入数据完整具体演示样例(二)

    MainActivity例如以下: package cc.y; import android.app.Activity; import android.content.Context; import ...

  4. Android平台调用Web Service:演示样例

    近期在学习Android,随着移动设备的流行,当软件走上商业化的道路,为了争夺市场,肯定须要支持Android的,所以開始接触了Android,只是仅仅了解皮毛就好,由于我们要做管理者嘛,懂点Andr ...

  5. 通过Canvas及File API缩放并上传图片完整演示样例

    创建一个只管的用户界面,并同意你控制图片的大小.上传到server端的数据,并不须要处理enctype为 multi-part/form-data 的情况.只一个简单的POST表单处理程序就能够了. ...

  6. Android图片旋转,缩放,位移,倾斜,对称完整演示样例(一)——imageView.setImageMatrix(matrix)和Matrix

    MainActivity例如以下: import android.os.Bundle; import android.view.MotionEvent; import android.view.Vie ...

  7. Android之——流量管理程序演示样例

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47680811 眼下.市面上有非常多管理手机流量的软件,能够让用户实时获取到自己手机 ...

  8. 构造Scala开发环境并创建ApiDemos演示样例项目

    从2011年開始写Android ApiDemos 以来.Android的版本号也更新了非常多,眼下的版本号已经是4.04. ApiDemos中的样例也添加了不少,有必要更新Android ApiDe ...

  9. 【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门演示样例

    一. 工作区域具体解释 1. Scence视图 (场景设计面板) scence视图简单介绍 : 展示创建的游戏对象, 能够对全部的游戏对象进行 移动, 操作 和 放置; -- 演示样例 : 创建一个球 ...

随机推荐

  1. OpenCV两种畸变校正模型源代码分析以及CUDA实现

    图像算法中会经常用到摄像机的畸变校正,有必要总结分析OpenCV中畸变校正方法,其中包括普通针孔相机模型和鱼眼相机模型fisheye两种畸变校正方法. 普通相机模型畸变校正函数针对OpenCV中的cv ...

  2. HTML中多种空格转义字符

     记录一下,空格的转义字符分为如下几种: 1.  &160#;不断行的空白(1个字符宽度) 2.  &8194#;半个空白(1个字符宽度) 3.  &8195#;一个空白(2个 ...

  3. [转]Angular 2 / 4 / 5 not working in IE11

    本文转自:https://stackoverflow.com/questions/35140718/angular-2-4-5-not-working-in-ie11/47777695#4777769 ...

  4. [转]如何将Angular localhost:4200 改为IP

    本文转自:https://blog.csdn.net/ygznx/article/details/78249118 ust specify the IP in --host option like n ...

  5. c# txt代码转换成HTML格式

    /// <summary> /// 字符串字符处理 /// </summary> /// <param name="chr">等待处理的字符串& ...

  6. Nuget快捷实践

    Nuget快捷实践 简介 本文主要包含三个部分,即创建nuget包.上传nuget包和删除nuget包.旨在引导快速使用nuget打包和使用,并实现对于nuget的简单管理. 本文使用的nuget服务 ...

  7. 具体CAS操作实现(无锁算法)

    具体CAS操作 上一篇讲述了CAS机制,这篇讲解CAS具体操作. 什么是悲观锁.乐观锁?在java语言里,总有一些名词看语义跟本不明白是啥玩意儿,也就总有部分面试官拿着这样的词来忽悠面试者,以此来找优 ...

  8. Thymeleaf学习记录(1)--启动模板及建立Demo

    Thymeleaf是什么? Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎.相比于JSP,Thymeleaf更简洁,渲染性能更好,维护性更好,它可以XML/XHTML/HTM ...

  9. Python 简单的远程执行命令

    client端执行命令,server端返回命令结果 # server 端 import socket, subprocess sk = socket.socket() address=('127.0. ...

  10. 从零开始学习html(六)开始学习CSS,为网页添加样式

    一.认识CSS样式 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type&quo ...