版权声明: 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. [CF718C] Sasha and Array

    Description 给定一个数列,维护两种操作 操作 \(1\),将区间 \([l,r]\) 的数字统一加 \(x\). 操作 \(2\),求 \(\sum \limits_{i=l}^r f(v ...

  2. spring cloud config安全

    前面两篇介绍了spring cloud config服务端和客户端的简单配置,本篇介绍如何保护config server及对应config client修改. 保护config server,主要是使 ...

  3. MapReduce核心 - - - Shuffle

    大数据名词(1) -Shuffle     Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle是必须要了解的.我看过很多相关的资料,但每 ...

  4. request请求 HTTPBody 格式

    //Json格式       [mtbRequset setValue:@"application/json" forHTTPHeaderField:@"Content- ...

  5. Java并发编程:Java线程池核心ThreadPoolExecutor的使用和原理分析

    目录 引出线程池 Executor框架 ThreadPoolExecutor详解 构造函数 重要的变量 线程池执行流程 任务队列workQueue 任务拒绝策略 线程池的关闭 ThreadPoolEx ...

  6. Git的概念及常用命令

    一.概念 Git是一个分布式的版本控制工具,区别于集中式管理的SVN. 二.优势 每个开发者都拥有自己的本地版本库,可以在本地任意修改代码.创建分支,不会影响到其他开发者的使用: 所有版本信息均保存在 ...

  7. Python3 系列之 环境配置篇

    以下所有操作是基于 Windows10 和 Python3.6 来进行的,其它平台和 python 版本请自行百度. 高效使用 Visual Studio Code 系列 环境安装 1.Python ...

  8. loj#2509. 「AHOI / HNOI2018」排列(思维题 set)

    题意 题目链接 Sol 神仙题Orz 首先不难看出如果我们从\(a_i\)向\(i\)连一条边,我们会得到以\(0\)为根的树(因为每个点一定都有一个入度,出现环说明无解),同时在进行排列的时候需要保 ...

  9. 【工具相关】Web-将网站放在XAMPP上面

    一,将XAMPP服务器打开--->Welcome--->Open Application Folder. 二,会出现如下所示界面.找到htdocs. 三,打开htdocs.如下图所示. 四 ...

  10. vue-cli脚手架目录一览

    最近在学习vue,看的稀里糊涂.今天从头开始,把cli配置的vue项目目录和配置文件搞清楚. 先看看整个项目目录结构: 再看看build文件夹下相关文件及目录: config文件夹下目录和文件: 接下 ...