Android内存清理,利用ActivityManager获取当前正在运行的进程,清理这些进程释放内存。

可以根据importance的不同来判断前台或后台RunningAppProcessInfo 里面的常量IMOPORTANCE就是上面所说的前台后台,其实IMOPORTANCE是表示这个app进程的重要性,因为系统回收时候,会根据IMOPORTANCE来回收进程的。具体可以去看文档。。

在配置文件中添加权限

<uses-permission android:name=”android.permission.KILL_BACKGROUND_PROCESSES”/>

内存清理代码以及获取系统内存和各个APP占用内存代码如下:

public class SystemInfoUtil {

/**
     * 获取可用内存
     *
     * @param context
     * @return
     */
    public static long getAvailMemory(Context context) {
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
        am.getMemoryInfo(mi);
        return mi.availMem / (1024 * 1024);

}

/**
     * 获取总内存
     *
     * @param context
     * @return
     */
    public static long getTotalMemory(Context context) {
        String str1 = "/proc/meminfo";// 系统内存信息文件
        String str2;
        String[] arrayOfString;
        long initial_memory = 0;
        try {
            FileReader localFileReader = new FileReader(str1);
            BufferedReader localBufferedReader = new BufferedReader(
                    localFileReader, 8192);
            str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小
            arrayOfString = str2.split("\\s+");
            initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte
            localBufferedReader.close();
        } catch (IOException e) {
        }
        return initial_memory / (1024 * 1024);
    }

//    public static final int IMPORTANCE_BACKGROUND = 400//后台
//    public static final int IMPORTANCE_EMPTY = 500//空进程
//    public static final int IMPORTANCE_SERVICE = 300//在服务中
//    public static final int IMPORTANCE_VISIBLE = 200//在屏幕前端、获取不到焦点可理解为
//    public static final int IMPORTANCE_FOREGROUND = 100//在屏幕最前端、可获取到焦点 可理解为Activity生命周期的OnResume();

/**
     * 清理内存
     *
     * @param context
     */
    public static void clearMemory(Context context) {
        ActivityManager activityManger = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> list = activityManger.getRunningAppProcesses();
        if (list != null) {
            for (int i = 0; i < list.size(); i++) {
                ActivityManager.RunningAppProcessInfo apinfo = list.get(i);
                String[] pkgList = apinfo.pkgList;
                if (apinfo.importance > ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
                    for (int j = 0; j < pkgList.length; j++) {
                        /**清理不可用的内容空间**/
                        activityManger.killBackgroundProcesses(pkgList[j]);
                    }
                }
            }
        }
    }

/**
     * 获取每个APP占用的内存
     *
     * @param context
     */
    public static void getEveryAppMemory(Context context) {
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> list = am.getRunningAppProcesses();
        if (list != null) {
            for (int i = 0; i < list.size(); i++) {
                ActivityManager.RunningAppProcessInfo appinfo = list.get(i);
                int[] myMempid = new int[]{appinfo.pid};
                Debug.MemoryInfo[] appMem = am.getProcessMemoryInfo(myMempid);
                int memSize = appMem[0].dalvikPrivateDirty / 1024;
                Log.e("AppMemory", appinfo.processName + ":" + memSize);
            }
        }
    }

/**
     * 清理应用缓存
     *
     * @param context
     */
    public static void clearAppCache(Context context) {
        File[] dir = context.getCacheDir().listFiles();
        if (dir != null) {
            for (File f : dir) {
                f.delete();
            }
        }
    }
}

Android清理内存相关推荐

  1. android 清理内存图标掉进垃圾桶的动画,Android Magnet:桌面删除APP自动弹出垃圾桶接受图标删除动作...

     Android Magnet:桌面删除APP自动弹出垃圾桶接受图标删除动作 在Android系统上,当用户长按桌面的图标后,会自动从底部或者顶部弹出一个垃圾或者叉子的删除图标,用户拖曳欲删除的图 ...

  2. android 清理内存图标掉进垃圾桶的动画,垃圾桶 icon 小动效

    一.步骤 1.添加背景:在时间轴面板右键---新建---纯色层 2.新建形状图层:选中矩形框---双击---新建一个画布大小的矩形,可以在矩形路径中改变其大小.圆角:想要改变其单个锚点,可以右键路径- ...

  3. android 开发清理内存_2019年 11 款最流行的安卓手机清理工具 总有一款适合你

    1. Wondershare MobileGo Storage Cleaner Wondershare MobileGo Storage Cleaner是一款多功能的 Android APP管理器,具 ...

  4. android 清理缓存动画,Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解...

    最近接了一个项目其中有功能要实现一个清理内存,要求和微信的效果一样.于是想到用surfaceView而不是继承view.下面小编给大家解析下实现思路. surfaceView是为了解决频繁绘制动画产生 ...

  5. android 图片内存缓存文件在哪个文件夹,别再用手机管家清理内存了!1分钟删掉这些文件夹,内存多出几个G...

    原标题:别再用手机管家清理内存了!1分钟删掉这些文件夹,内存多出几个G 你的手机内存还剩多少G?我们在使用手机时,都会产生大量的缓存数据,如果不定期清理,就会积少成多,导致手机内存空间爆满. 你有定期 ...

  6. android开发 清理内存不足,Android现在还需要清理内存吗?不!

    对于很多人而言,尤其是那些有强迫症者,这是个然并卵的命题,但是在我们周围,还有很多这样的智能手机用户:怎么这个手机3G内存,空闲的也只有600MB呢?以前那个2G内存的手机都有800MB的空闲,我要一 ...

  7. android平板内存清理,需要给安卓手机清理内存么?不用!

    我知道,对于很多人而言,尤其是那些有强迫症者,这是个然并卵的命题,但是在我们周围,还有很多这样的智能手机用户:怎么这个手机3G内存,空闲的也只有600MB呢?以前那个2G内存的手机都有800MB的空闲 ...

  8. Android踩内存工具,手机内存清理软件下载

    软件标签: 内存清理 主要功能 1.收集系统正在运行任务的详细信息 2.自定义内存清理模式,使系统运行畅快自如 3.进程切换,软件卸载一键完成 安卓手机清理内存到底有什么作用? 1.手机反应速度变快 ...

  9. Android 自定义水波球清理内存的悬浮窗小工具

    一.概述 现在一些手机管家都会有一个用来清理内存的悬浮窗小工具,感觉挺实用的,就自己做了一个.首先介绍一下这个工具的功能,除了可以清理内存,还有调节手机屏幕亮度.手电筒.无线网.移动数据.蓝牙.GPS ...

最新文章

  1. .ne中的控制器循环出来的数据如何显示在视图上_Web程序设计-ASP.NET MVC4数据库操作实例...
  2. java 注解去掉缓存_java spring 使用注解来实现缓存
  3. 2012年生活方向盘
  4. 081_html5地理定位
  5. android 固定大小数组,android-Kotlin中的最大数组大小
  6. 执行 redis-dump 报错:ERROR (Errno::ENOENT): No such file or directory - ps -o rss= -p xxxxx
  7. 不花钱就补足营养的8妙招
  8. 百度联合长虹发布第二款云手机 售价900元以下
  9. wps合并所有sheet页_表格高级筛选、表格合并,让表格处理事半功倍
  10. 瑞丽,边陲的旖旎风情
  11. drupal php filter,Drupal A-Z and number filter
  12. Arm公布2019年物联网领域五大预测:智能家居、智慧城市、医疗保健上榜
  13. Qt中实现鼠标作图并且控制每一笔粗细和颜色的方法
  14. 彻底理解文本主题模型LDA(极致原理讲解+实战)
  15. 5.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Kong 的配置详解
  16. Tomcat 下载、安装与配置
  17. [Evolutionary Algorithm] 进化算法简介
  18. 《C++ Primer 第5版》-11.1使用关联容器-康奈尔笔记
  19. 视频拍摄——视点和视角
  20. win10系统Jinlk固件烧写

热门文章

  1. 使用树莓派播放音频文件
  2. java.lang.ExceptionInInitializerError Caused by: org.apache.ibatis.exceptions.PersistenceException
  3. iOS 调用系统相册拍照时显示英文问题
  4. chrome浏览器打开网页默认全屏的方法
  5. CocosCreator原生开发 dalvik.system.PathClassLoader[DexPathList[[zip file couldn‘t find “libcocos2djs.so“
  6. 取代李嘉诚成香港新首富,宁德时代曾毓群将面对的是什么?
  7. UWA发布 | Unity手游体检蓝皮书
  8. Conexant Bt878驱动及视频软件开发
  9. 基于SSM的美食推荐管理系统
  10. vnc下载,什么是vnc下载?五款好用推荐