我在我的android应用程序中缓存了很多文件,但是在nexus 6棉花糖上遇到了问题,因为它的onyl保存了一张图片。然后对第二个缓存进行清理。
long MAX_SIZE = 30242880L;
File cacheDir = lView.getCacheDir();
long size = Common.getDirSize(cacheDir);
System.out.println(Common.freeMemory(lView.getCacheDir().getAbsolutePath())+"entering hereeee"+size);
if (size > Common.freeMemory(lView.getCacheDir().getAbsolutePath())) {
System.out.println("entering hereeee"+size);
Common.cleanDir(cacheDir, MAX_SIZE);
}11-10 22:57:20.731: I/System.out(19080):-532029440输入hereeee79576
static long getDirSize(File dir) {
long size = 0;
try {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isFile()) {
size += file.length();
}
}
} catch(Exception e1) {
}
return size;
}
static long freeMemory(String bath) {
StatFs statFs = new StatFs(bath);
long free = (statFs.getFreeBlocks() * statFs.getBlockSize());
return free;
}发布于 2015-11-10 21:10:55
由于int溢出,freeMemory返回一个负值。把它改成
static long freeMemory(String bath) {
StatFs statFs = new StatFs(bath);
long free = ((long)statFs.getFreeBlocks() * (long)statFs.getBlockSize());
return free;
}https://stackoverflow.com/questions/33639390
复制相似问题