Android开发实现的内存管理工具类
程序员文章站
2023-12-01 16:05:34
本文实例讲述了android开发实现的内存管理工具类。分享给大家供大家参考,具体如下:
/************************************...
本文实例讲述了android开发实现的内存管理工具类。分享给大家供大家参考,具体如下:
/*********************************************** * 内存管理工具 * * @author chen.lin * @version 1.0 ************************************************/ public class memorymanager { private static final string tag = "memorymanager"; private static final int maxmemory=300*1024*1024;//程序运行的最大内存 模拟器(0-16m) /** * 判断系统是否在低内存下运行 * @param context * @return */ public static boolean hasacailmemory() { // 获取手机内部空间大小 long memory = getavailableinternalmemorysize(); log.i(tag, memory+""); if (memory < maxmemory) { //应用将处于低内存状态下运行 return false; } else { return true; } } /** * 获取手机内部可用空间大小 * * @return */ @suppresswarnings("deprecation") public static long getavailableinternalmemorysize() { file path = environment.getdatadirectory();// 获取 android 数据目录 statfs stat = new statfs(path.getpath());// 一个模拟linux的df命令的一个类,获得sd卡和手机内存的使用情况 long blocksize = stat.getblocksize();// 返回 int ,大小,以字节为单位,一个文件系统 long availableblocks = stat.getavailableblocks();// 返回 int ,获取当前可用的存储空间 return availableblocks * blocksize; } /** * 获取手机内部空间大小 * * @return */ @suppresswarnings("deprecation") public static long gettotalinternalmemorysize() { file path = environment.getdatadirectory(); statfs stat = new statfs(path.getpath()); long blocksize = stat.getblocksize(); long totalblocks = stat.getblockcount();// 获取该区域可用的文件系统数 return totalblocks * blocksize; } /** * 获取手机外部可用空间大小 * * @return */ @suppresswarnings("deprecation") public static long getavailableexternalmemorysize() { if (externalmemoryavailable()) { file path = environment.getexternalstoragedirectory(); statfs stat = new statfs(path.getpath()); long blocksize = stat.getblocksize(); long availableblocks = stat.getavailableblocks(); return availableblocks * blocksize; } else { throw new runtimeexception("don't have sdcard."); } } /** * 获取手机外部空间大小 * * @return */ @suppresswarnings("deprecation") public static long gettotalexternalmemorysize() { if (externalmemoryavailable()) { file path = environment.getexternalstoragedirectory();// 获取外部存储目录即 sdcard statfs stat = new statfs(path.getpath()); long blocksize = stat.getblocksize(); long totalblocks = stat.getblockcount(); return totalblocks * blocksize; } else { throw new runtimeexception("don't have sdcard."); } } /** * 外部存储是否可用 * * @return */ public static boolean externalmemoryavailable() { return android.os.environment.getexternalstoragestate().equals(android.os.environment.media_mounted); } }
更多关于android相关内容感兴趣的读者可查看本站专题:《android开发之内存与缓存技巧总结》、《android资源操作技巧汇总》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android文件操作技巧汇总》、《android开发入门与进阶教程》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。
上一篇: C# Main方法的传入参数研究
推荐阅读
-
Android开发笔记之:在ImageView上绘制圆环的实现方法
-
Android实现获取SD卡总容量,可用大小,机身内存总容量及可用大小的方法
-
Android开发实现拍照功能的方法实例解析
-
Android开发使用自定义view实现ListView下拉的视差特效功能
-
Android开发实现自定义水平滚动的容器示例
-
android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)
-
Android编程实现使用Intent传输包含自定义类的ArrayList示例
-
Android开发实现简单的观察者与被观察者示例
-
Android开发实现Launcher3应用列表修改透明背景的方法
-
Android开发实现的几何图形工具类GeometryUtil完整实例