G_jia
G_jia
  • 发布:2015-12-29 17:28
  • 更新:2017-03-01 16:47
  • 阅读:6931

Android的缓存计算方法(plus.cache.calculate)为什么取不到值

分类:HTML5+

问题描述:首次加载列表,将图片下载到本地,如果用户点击清除缓存,将保存在本地的图片全部删除。
两种实现方式
1、plus.cache.calculate/clear,但是在iOS系统上正常,但在Android系统上获取的缓存值为0。无奈只好选择第二种方式。
2、单独将文件夹下的图片文件全部删除,

plus.io.resolveLocalFileSystemURL("_downloads/image/",function(entry){  
         entry.remove(function(e){  
              mui.toast("清除成功");}  
         },  
            function(err){mui.toast(err.message);  
        })  
},function(err){});

但是却报错,错误内容:执行错误(不懂)。实在没招,来求助,希望帮忙解答,在此谢过!

明白了第二种方法的报错原因,entry.remove方法只可删除空目录,如果目录下有文件就会报错。现在我改用了entry.removeRecursively方法,可以执行成功,经测试,文件好像并未删除。如果我再次调用下面的代码(主要获取该文件夹下的文件大小)就会报错

plus.io.resolveLocalFileSystemURL("_downloads/image/",function(entry){                    
    entry.getMetadata(function(metadata){  
        var s = metadata.size/(1024*1024);  
        document.getElementById("cacheSize").innerHTML = s.toFixed(1)+"M";  
    },function(err){console.log("获取文件大小失败");})  
},function(err){console.log(err.message);})

真头疼

2015-12-29 17:28 1 条评论 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

  1. plus.cache API确实存在不准确的问题,暂时还没找到解决方案
  2. removeRecursively方法可以删除目录,如果目录删除了,resolveLocalFileSystemURL则会返回失败。请确认你是如何验证文件并未删除的?
  • G_jia (作者)

    我首先在线将图片缓存到本地,然后置为离线状态,此时可以正常读取本地图片信息,说明图片已缓存至本地。之后,我执行removeRecursively方法,提示执行成功,但是我还可以从本地读取到图片信息并正常显示,所以,得出结论:本地图片并未被删除。当我再次执行resolveLocalFileSystemURL方法,则提示执行错误信息。然后我联网再次缓存,resolveLocalFileSystemURL方法执行成功

    2015-12-31 10:57

  • G_jia (作者)

    @46

    2015-12-31 10:58

  • G_jia (作者)

    removeRecursively API的描述:删除目录将会删除其下的所有文件及子目录 不能删除根目录,如果操作删除根目录将会删除目录下的文件及子目录,不会删除根目录自身。

    我删除的目录为“_downloads/image/”下的所有文件及子目录,并未删除image文件夹,为什么我再次调用resolveLocalFileSystemURL("_downloads/image/",,)会报错?

    2015-12-31 11:30

  • G_jia (作者)

    @46 给看看呗

    2015-12-31 17:44

  • DCloud_App_Array

    调用removeRecursively方法会删除当前操作的目录image,所以解析_downloads/image/会失败。另外,删除后还能读取,可能跟执行脚本的前后顺序有关,5+ API需要在plusready事件后才能执行,如果在此之前通过src去访问image目录肯定是可以加载到图片的。

    2016-01-04 11:28

  • 没得好名字

    请问现在plus.cache.calculate这个能用了不?还是不生效。

    2019-04-08 14:41

l***@163.com

l***@163.com

同问。android 如何计算缓存。并清除

Nicole0724

Nicole0724

请问解决了吗?

师大酸梅杨

师大酸梅杨

试试看有没有效果 http://ask.dcloud.net.cn/article/1191

该问题目前已经被锁定, 无法添加新回复