欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发实现的内存管理工具类

程序员文章站 2023-08-12 13:44: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程序设计有所帮助。