1.位置
/frameworks/base/core/java/android/util/DataUnit.java
2.源码
public enum DataUnit {
KILOBYTES { @Override public long toBytes(long v) { return v * 1_000; } },
MEGABYTES { @Override public long toBytes(long v) { return v * 1_000_000; } },
GIGABYTES { @Override public long toBytes(long v) { return v * 1_000_000_000; } },
KIBIBYTES { @Override public long toBytes(long v) { return v * 1_024; } },
MEBIBYTES { @Override public long toBytes(long v) { return v * 1_048_576; } },
GIBIBYTES { @Override public long toBytes(long v) { return v * 1_073_741_824; } };
public long toBytes(long v) {
throw new AbstractMethodError();
}
}
3. 常见用法
private static final long DEFAULT_THRESHOLD_MAX_BYTES = DataUnit.MEBIBYTES.toBytes(200);
private static final long DEFAULT_CACHE_MAX_BYTES = DataUnit.GIBIBYTES.toBytes(5);
private static final long DEFAULT_FULL_THRESHOLD_BYTES = DataUnit.MEBIBYTES.toBytes(1);
4.分析
数字中加下划线的写法是java7的新特性,1_000=1000。
tips:按照理论上来说1MB=1024KB(也就是2的10次方),但是硬盘厂商是按照1MB=1000KB的标准,因此存储设备和计算机在包装或说明上标准的1MB=1000KB;安卓系统中计算内存的换算也是按照1MB=1000KB来进行换算的。