MainActivity如下:
MemoryUtils如下:
ServiceSubclass如下:
main.xml如下:
AndroidManifest.xml如下:
- package come.on;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- /**
- * Demo描述:
- * 内存清理及内存工具类
- * 具体代码参见工具类MemoryUtils
- *
- */
- public class MainActivity extends Activity {
- private Button mButton;
- private Context mContext;
- private EditText mEditText;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- init();
- }
- private void init(){
- mContext=this;
- Intent intent=new Intent("come.on.service");
- //该Service无用,可去掉
- startService(intent);
- mEditText=(EditText) findViewById(R.id.editText);
- mButton=(Button) findViewById(R.id.button);
- mButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- MemoryUtils.cleanMemory(mContext,mEditText);
- }
- });
- }
- }
- package come.on;
- import java.util.List;
- import java.io.FileReader;
- import android.os.Process;
- import java.io.IOException;
- import java.io.BufferedReader;
- import android.widget.EditText;
- import android.content.Context;
- import java.io.InputStreamReader;
- import android.app.ActivityManager;
- import android.content.ComponentName;
- import android.app.ActivityManager.MemoryInfo;
- import android.app.ActivityManager.RunningTaskInfo;
- import android.app.ActivityManager.RunningAppProcessInfo;
- /**
- * 文档描述:
- * 内存工具类
- *
- * 包括内容:
- * 1 内存清理即杀掉进程的几种方式
- * 2 获取内存总大小及其可用大小
- * 3 判断栈顶Activity名及其所属进程名
- *
- * 注意权限:
- *
- *
- *
- * 文档日期:
- * 2014年5月30日10:01:55
- *
- */
- public class MemoryUtils {
- //----------> 以下为杀掉进程的几种方式
- public static void cleanMemory(Context context,EditText editText) {
- long beforeCleanMemory=getAvailMemory(context);
- System.out.println("---> 清理前可用内存大小:"+beforeCleanMemory+"M");
- ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
- RunningAppProcessInfo runningAppProcessInfo = null;
- List runningAppProcessInfoList = activityManager.getRunningAppProcesses();
- for (int i = 0; i 以上为杀掉进程的几种方式
- //获取当前进程名
- public static String getCurrentProcessName(Context context) {
- int pid = android.os.Process.myPid();
- ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
- for (RunningAppProcessInfo runningAppProcessInfo : activityManager.getRunningAppProcesses()) {
- if (runningAppProcessInfo.pid == pid) {
- String processName=runningAppProcessInfo.processName;
- return processName;
- }
- }
- return null;
- }
- //获取栈顶Activity名称
- public static String getTopActivityName(Context context) {
- String topActivityName = null;
- ActivityManager activityManager = (ActivityManager) (context.getSystemService(android.content.Context.ACTIVITY_SERVICE));
- List runningTaskInfos = activityManager.getRunningTasks(1);
- if (runningTaskInfos != null) {
- ComponentName f = runningTaskInfos.get(0).topActivity;
- String topActivityClassName = f.getClassName();
- String temp[] = topActivityClassName.split("\\.");
- topActivityName = temp[temp.length - 1];
- }
- return topActivityName;
- }
- //获取栈顶Activity所属进程的名称
- public static String getTopActivityProcessName(Context context) {
- String processName = null;
- ActivityManager activityManager = (ActivityManager) (context.getSystemService(android.content.Context.ACTIVITY_SERVICE));
- List runningTaskInfos = activityManager.getRunningTasks(1);
- if (runningTaskInfos != null) {
- ComponentName componentName = runningTaskInfos.get(0).topActivity;
- String topActivityClassName = componentName.getClassName();
- int index = topActivityClassName.lastIndexOf(".");
- processName = topActivityClassName.substring(0, index);
- }
- return processName;
- }
- //获取内存总大小
- public static 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();
- } catch (IOException e) {
- }
- return totalMemory / 1024;
- }
- //获取可用内存大小
- public static long getAvailMemory(Context context) {
- ActivityManager activityManager=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
- MemoryInfo memoryInfo = new MemoryInfo();
- activityManager.getMemoryInfo(memoryInfo);
- return memoryInfo.availMem / (1024 * 1024);
- }
- }
- package come.on;
- import android.app.Service;
- import android.content.Intent;
- import android.os.IBinder;
- public class ServiceSubclass extends Service {
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- @Override
- public void onCreate() {
- super.onCreate();
- System.out.println("---> Service的 onCreate()");
- }
- @Override
- public void onStart(Intent intent, int startId) {
- super.onStart(intent, startId);
- System.out.println("---> Service的 onStart()");
- }
- }