首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android缓存处理

Android缓存处理
EN

Stack Overflow用户
提问于 2015-11-10 20:52:28
回答 1查看 91关注 0票数 1

我在我的android应用程序中缓存了很多文件,但是在nexus 6棉花糖上遇到了问题,因为它的onyl保存了一张图片。然后对第二个缓存进行清理。

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-10 21:10:55

由于int溢出,freeMemory返回一个负值。把它改成

代码语言:javascript
运行
复制
static long freeMemory(String bath) {
    StatFs statFs = new StatFs(bath);
    long free = ((long)statFs.getFreeBlocks() * (long)statFs.getBlockSize());

    return free;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33639390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档