public class MemoryUtils { /** * 获取android当前可用内存大小 * * @param context Context * @return 可用内存大小 */ public static long getAvailMemory(Context context) { if (context == null) return 0; ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); am.getMemoryInfo(mi); //mi.availMem: 当前系统的可用内存 return mi.availMem; } /** * @return 总内存大小 */ public static long getTotalMemory() { long initial_memory = 0; FileReader localFileReader = null; BufferedReader localBufferedReader = null; try { // 系统内存信息文件 String meminfo = "/proc/meminfo"; localFileReader = new FileReader(meminfo); localBufferedReader = new BufferedReader(localFileReader, 8192); // 读取meminfo第一行,系统总内存大小 String line = localBufferedReader.readLine(); String[] arrayOfString = line.split("\\s+"); // 获得系统总内存,单位是KB,乘以1024转换为Byte initial_memory = arrayOfString.length > 1 ? Integer.valueOf(arrayOfString[1]) * 1024 : 0; localBufferedReader.close(); } catch (IOException ignored) { } finally { try { if (localFileReader != null) localFileReader.close(); } catch (IOException ignored) { } try { if (localBufferedReader != null) localBufferedReader.close(); } catch (IOException ignored) { } } return initial_memory; } /** * 获取可用内存的百分比. * * @param context Context * @return 百分比 0~100. */ public static long getAvailablePercent(Context context) { long available = getAvailMemory(context); if (available == 0) return 0; long total = getTotalMemory(); if (total == 0) return 0; return available / (total / 100); } }
Android内存工具类
最新推荐文章于 2021-05-26 07:38:16 发布