版权声明: 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. linux启动运行级别上机,linux的启动及其运行级别
  2. linux shell命令行及脚本编程实例详解_Linux高手必看的10本经典书籍
  3. MySQL中常见的单行函数(下)
  4. java实现随机验证码的图片
  5. 人脸静默活体检测最新综述
  6. 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法...
  7. 自由软件基金会庆祝成立35周年
  8. python最大值_Python 获取最大值函数|python3教程|python入门|python教程
  9. TCP/IP网络编程之基于TCP的服务端/客户端(二)
  10. BAT网页10年巨变,背后的前端技术你都知道吗?
  11. 爆料称三星Galaxy S22 Ultra或更名:融合Note系列实锤
  12. 第四周课程总结实验报告二
  13. 如何安装无签名认证的rpm包
  14. 物联网平台发展前景如何快速发展
  15. 理解int的存储方式以及二进制编辑器的使用
  16. 综合布线系统技术是建设智慧城市的血脉
  17. 如何查看自己的代理ip地址
  18. 【活动更新】第一届Openbravo社区早餐会将与5/28在上海举办
  19. Unity3D射击类游戏制作第一节--场景搭建
  20. 查看路由器地址是否是公网ip

热门文章

  1. 1.2 如何在visual studio 中建立C#程序
  2. Fluent NHibernate之旅
  3. mssql性能优化[转](教你写出高质量的SQL语句)(二)
  4. SQL 语句 - Select(1): 指定表
  5. Solaris 10主动安顿DVD运用步骤
  6. Java基于redis实现分布式锁(SpringBoot)
  7. unity3d 人员控制代码
  8. redis本地及远程登录
  9. 【GitLab】CentOS安装GitLab最佳实践
  10. Android实现3D旋转效果