Android清理设备内存具体完整演示样例(二)
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清理设备内存具体完整演示样例(二)相关推荐
- 百度地图 Android SDK - 检索功能使用的简单演示样例
百度地图 SDK 不仅为广大开发人员提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发人员提供了多种 LBS 检索的能力. 通过这些接口,开发人员能够轻松的訪问百度的 LBS 数据,丰富自己的移 ...
- 最简单的视音频播放演示样例3:Direct3D播放YUV,RGB(通过Surface)
===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...
- Androidclient与服务端交互之登陆演示样例
今天了解了一下androidclient与服务端是如何交互的,发现事实上跟web有点类似吧,然后网上找了大神的登陆演示样例.是基于IntentService的 1.后台使用简单的servlet,支持G ...
- 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV
===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...
- Java 8 时间日期库的20个使用演示样例
除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...
- 最简单的视音频播放演示样例4:Direct3D播放RGB(通过Texture)
===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- Oracle简单脚本演示样例
Oracle简单脚本演示样例 1.添加表 --改动日期:2014.09.21 --改动人:易小群 --改动内容:新增採购支付情况表 DECLARE VC_STR VARCHAR2( ...
- Cocos2d-x 3.2 Lua演示样例FontTest(字体測试)
Cocos2d-x 3.2 Lua演示样例FontTest(字体測试) 本篇博客介绍Cocos2d-x 3.2中Lua測试项目中的FontTest样例,主要使用了字体文件来创建我们想要的字体样式: 第 ...
最新文章
- linux启动运行级别上机,linux的启动及其运行级别
- linux shell命令行及脚本编程实例详解_Linux高手必看的10本经典书籍
- MySQL中常见的单行函数(下)
- java实现随机验证码的图片
- 人脸静默活体检测最新综述
- 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法...
- 自由软件基金会庆祝成立35周年
- python最大值_Python 获取最大值函数|python3教程|python入门|python教程
- TCP/IP网络编程之基于TCP的服务端/客户端(二)
- BAT网页10年巨变,背后的前端技术你都知道吗?
- 爆料称三星Galaxy S22 Ultra或更名:融合Note系列实锤
- 第四周课程总结实验报告二
- 如何安装无签名认证的rpm包
- 物联网平台发展前景如何快速发展
- 理解int的存储方式以及二进制编辑器的使用
- 综合布线系统技术是建设智慧城市的血脉
- 如何查看自己的代理ip地址
- 【活动更新】第一届Openbravo社区早餐会将与5/28在上海举办
- Unity3D射击类游戏制作第一节--场景搭建
- 查看路由器地址是否是公网ip