wyouflf / xUtils3

Android orm, bitmap, http, view inject...

Home Page:https://gitee.com/wyouflf/xUtils3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

怎么删除缓存中某个图片

taixjgg opened this issue · comments

要清理某张图片的缓存,下载新的,调用什么方法?

#########
re: ImageOptions.Builder#setParamsBuilder( …params.setCacheMaxAge(1)//ms... )

我也遇到这样的问题,不幸的是,我看ImageManager这个类里面压根就没有提供这样的API

ImageOptions.Builder#setParamsBuilder( …params.setCacheMaxAge(1)//ms… ) // 磁盘缓存1毫秒失效
或者:
x.image().loadFile(...., new CacheCallback(){ onCache(){ ... return false;} }) // 不信任缓存, 每次更新
// 任何加载图片的方法(loadDrawable, bind等), 加上CacheCallback, onCache返回false就会重新下载, 表示不信任缓存.
或者:
url后面加一个可变参数, 例如 http://xxx?t=123, 需要更新时改变t的值

  • 除非你的图片变了之后只有一个用户看, 没有其他用户能够看到这个内容; 否则, 必须将url改变, 要不然其他用户也需要删掉这个缓存, 但是你怎么知道其他用户的设备上 有没有这个缓存图片 或者 哪些缓存是服务端已经更新了的, 如果需要这样的复杂策略请参考CacheCallback参数的用法(ps: xUtils支持expriy, max-age和Etag, 除非你的服务端做了该策略的支持, 就能更好的支持缓存生命周期的控制, 要支持Etag必须使Callback.CacheCallback#onCache返回false, 但我觉得这是自找麻烦).
  • 强烈建议图片修改就使用新的url, 哪怕变了一个时间戳. 这样的话使用任何第三方图片加载工具时都不需要关心缓存怎么操作, 因为它一般都是自动管理的.
  • 另外, xUtils会对最近不常被使用的缓存图片会根据LRU算法自动清理. 特殊场景请通过Callback.CacheCallback扩展, 不要尝试手动删除缓存.

支持作者的观点,图片改变之后个人感觉更应该使用一个新的地址,这样可控性更高

我加载的图片为何不清晰,和原图差别很大?

################
RE: ImageOptions添加size参数, 可能自适应的size太小.

之前的一个原则就说能在服务器端实现的就尽量不要在客户端折腾,更新url才最便捷和根本。

你好 我用您的xUtils加载网络的大图有出现图片模糊的情况 640-5320像素的不会模糊 640-7228像素的会变模糊 这种情况请问要怎么处理的呀 还望帮忙解答一下 谢谢啦

################
RE: ImageOptions添加size参数, 可能自适应的size太小, 640-7228这样的比例, 压缩到屏幕大小也会模糊, 建议查看单张详情时在加载更清晰的大图.

怎么设置图片缓存路径

################
可参考ImageOptions.Builder#setParamsBuilder

commented

怎么把xUtils加载的图片,显示到图库里?缓存文件名的后缀怎么加上.jpg?

###########
x.image().loadFile(...., new CacheCallback(){ onCache(){ ... return true;} })
覆盖onSuccess的时候做另存为的操作

我想实现一个省流量模式,怎么 globalConfig.getBitmapCache().getBitmapFromDiskCache(url, defaultDisplayConfig);得不到缓存啊,但是从内存中获取又获取到?是不是本来就没加到闪存中?怎么查看啊。。。。。另外我想问下,怎么计算缓存的大小?

###########
x.image().loadFile(...., new CacheCallback(){ onCache(){ ... return true;} })
覆盖onSuccess的时候做另存为的操作
缓存大小: ImageOptions.Builder#setParamsBuilder, params#setCacheSize

请问一下,怎么取到缓存的文件

###########
x.image().loadFile(...., new CacheCallback(){ onCache(){ ... return true;} })

ImageOptions.Builder#setParamsBuilder
这个如何设置?
如何设置图片缓存路径

###########
x.image().loadFile(...., new CacheCallback(){ onCache(){ ... return true;} })
覆盖onSuccess的时候做另存为等操作
不要设置缓存路径, android较高的版本可能会有更高的文件夹管理权限, 仅支持设置缓存文件夹的名字:
params#setCacheDirName

怎么设置listview滑动的时候不加载图片啊

#############
没有这个设置, 支持断点下载的, 被回收的view会自动停止下载.

在X.image图片获取的时候怎么获取cookie?

#######################
ImageOptions.Builder#setParamsBuilder
x.image().loadXXX, 使用calllback扩展, 参考RequestInterceptListener

对于其他图片框架,没有提供重新设置 url对应的缓存内容的api
这个问题的终极解决方案是这样的:
http://xxx.com/image/1.pnghttp://xxx.com/image/1.png ?1469247425923
这2个url 获取到的图片是一样的

so,当你app里面更改了图片,而服务器里图片url是固定不变的, 你只需要在你 的url地址后面 加个 ?和一些字符串,如时间戳,那么用这个 新的url替换你的旧的url,然后用 图片框架重新加载一遍

如何设置图片的缓存路径

###########
x.image().loadFile(...., new CacheCallback(){ onCache(){ ... return true;} })
覆盖onSuccess的时候做另存为等操作
不要设置缓存路径, android较高的版本可能会有更高的文件夹管理权限, 仅支持设置缓存文件夹的名字:
params#setCacheDirName

如何指定缓存路径,网络的和图片的,或者怎么得到缓存的大小呢

###########
x.image().loadFile(...., new CacheCallback(){ onCache(){ ... return true;} })
覆盖onSuccess的时候做另存为等操作
不要设置缓存路径, android较高的版本可能会有更高的文件夹管理权限, 仅支持设置缓存文件夹的名字:
params#setCacheDirName, params#setCacheSize

commented

有没方法判断某个url是否有缓存?

###########
x.image().loadFile(...., new CacheCallback(){ onCache(){ ... return true;} })
覆盖onSuccess的时候做另存为等操作

我在使用x.image().bind(ImageView view,String url)来绑定服务器图片的时候怎么带上cookie,其它的请求Post都默认带cookie,能正常请求服务器数据,但是绑定图片的方法不能正常使用,请问需要怎么做?

####################
ImageOptions.Builder#setParamsBuilder
params#setUseCookie

x.image里面有没load(.... , Bitmap bitmap,.....) ,来直接显示这个bitmap 并且能缓存的 方法 ?

ImageOptions imageOptions = new ImageOptions.Builder()
.setCircular(true)
.setFailureDrawableId(R.mipmap.icon)
.setUseMemCache(false)
.build();

                x.image().bind(img_top_activity, “一个图片的URL”, imageOptions);

为什么当图片url改变的时候界面上图片还是上一次加载的?

x.image().bind(view, url),当url是个本地路径 /sdcard/0/xxx/xx.jpg ,该文件不存在时,什么都不显示,应该显示:setFailureDrawableId这个方法设置的图片吧。而且回调居然不是onError而是onFinish,这是不是一个大BUG

##############
re: 已修复