版权声明: 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;@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" ><TextViewandroid:id="@+id/totalTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="系统内存:"android:textSize="25sp"android:textColor="#1cf109" /><TextViewandroid:id="@+id/totalMemoryTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/totalTextView"android:textSize="25sp"android:textColor="#1cf109" /><TextViewandroid: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" /><TextViewandroid: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" /><Buttonandroid:id="@+id/cleanButton"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/availMemoryTextView"android:textSize="25sp"android:text="清理内存" /><ScrollViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/cleanButton" ><TextViewandroid:id="@+id/cleanInfoTextView"android:layout_width="fill_parent"android:layout_height="wrap_content" /></ScrollView></RelativeLayout>

PS:更好的方式请參见Android清理设备内存具体完整演示样例(一)

转载于:https://www.cnblogs.com/mqxnongmin/p/10745174.html

Android清理设备内存具体完整演示样例(二)相关推荐

  1. 百度地图 Android SDK - 检索功能使用的简单演示样例

    百度地图 SDK 不仅为广大开发人员提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发人员提供了多种 LBS 检索的能力. 通过这些接口,开发人员能够轻松的訪问百度的 LBS 数据,丰富自己的移 ...

  2. 最简单的视音频播放演示样例3:Direct3D播放YUV,RGB(通过Surface)

    ===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...

  3. Androidclient与服务端交互之登陆演示样例

    今天了解了一下androidclient与服务端是如何交互的,发现事实上跟web有点类似吧,然后网上找了大神的登陆演示样例.是基于IntentService的 1.后台使用简单的servlet,支持G ...

  4. 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV

    ===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...

  5. Java 8 时间日期库的20个使用演示样例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...

  6. 最简单的视音频播放演示样例4:Direct3D播放RGB(通过Texture)

    ===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...

  7. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  8. Oracle简单脚本演示样例

    Oracle简单脚本演示样例 1.添加表 --改动日期:2014.09.21 --改动人:易小群 --改动内容:新增採购支付情况表 DECLARE VC_STR           VARCHAR2( ...

  9. Cocos2d-x 3.2 Lua演示样例FontTest(字体測试)

    Cocos2d-x 3.2 Lua演示样例FontTest(字体測试) 本篇博客介绍Cocos2d-x 3.2中Lua測试项目中的FontTest样例,主要使用了字体文件来创建我们想要的字体样式: 第 ...

最新文章

  1. 【高并发】32位多核CPU并发读写long型数据为何会出现诡异问题?看完这篇我懂了!...
  2. DJango-如何快速准备Python虚拟开发环境并快速定制一个项目
  3. 「SAP技术」SAP MM ME2N报表能按‘order acknowledgement‘查询采购订单
  4. linux make 命令行 定义宏(-D)传递给C源代码 简介
  5. 如何查看夜神模拟器的端口
  6. go channel管道select case随机选择管道数据
  7. php extname shared,PHP: 编写第一个PHP扩展
  8. 我背着女朋友,用 Python 偷偷抓取了她的行踪
  9. C# 直接选择排序(史上最清晰,最通俗)
  10. mangos架设魔兽世界私服
  11. 版本管理-SVN本地版本管理
  12. flash读取程序 msp430_MSP430 flash的操作
  13. 基因数据处理72之GATK安装成功
  14. 电信宽带连接不上无线可连接服务器,电信宽带连接为什么无线连接上宽带连接连不上...
  15. python人力成本数据测算_人力成本分析计算公式大全
  16. 键盘VK键值表---完整
  17. 【JVM】内存结构(下)
  18. php recursion,php5.1.6情况下,出现RECURSION。求破!!!
  19. linux 本地ip看不到,解决Linux中ifconfig和addr查看不到ip问题
  20. 详细介绍预处理#define和编译链接等有关知识

热门文章

  1. spring分布式事务学习笔记(2)
  2. 滚动一定的高度底色递增
  3. AJAX, callback,promise and generator
  4. SQL SERVER 中 GO 的用法2
  5. C# winform 窗体怎么隐藏标题栏,不显示标题栏
  6. HDU 1950 Bridging signals
  7. Android LBS系列05 位置策略(一)
  8. 高效的组合数计算方法
  9. 高仿人人Android梦想版终极源码发送(转)
  10. 彻底搞懂 JS 中 this 机制