Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

怎么删除缓存中某个图片 #149

Closed
taixjgg opened this issue Jan 20, 2016 · 22 comments
Closed

怎么删除缓存中某个图片 #149

taixjgg opened this issue Jan 20, 2016 · 22 comments

Comments

@taixjgg
Copy link

taixjgg commented Jan 20, 2016

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

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

@yuanboliu
Copy link

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

@wyouflf
Copy link
Owner

wyouflf commented Jan 22, 2016

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的值

@wyouflf
Copy link
Owner

wyouflf commented Jan 22, 2016

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

@wangzhucheng
Copy link

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

@linglongxin24
Copy link

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

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

@yanzai
Copy link

yanzai commented Jan 31, 2016

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

@sunny-zhb
Copy link

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

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

@ljhrs
Copy link

ljhrs commented Feb 3, 2016

怎么设置图片缓存路径

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

@boycechan
Copy link

boycechan commented Mar 28, 2016

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

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

@gt562559842
Copy link

gt562559842 commented Apr 21, 2016

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

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

@eric-lian
Copy link

eric-lian commented May 4, 2016

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

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

@aiybybz
Copy link

aiybybz commented May 17, 2016

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

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

@LuoGuoXin
Copy link

LuoGuoXin commented Jun 17, 2016

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

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

@394090466
Copy link

394090466 commented Jul 18, 2016

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

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

@a1anwang
Copy link

a1anwang commented Jul 23, 2016

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

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

@zkq-java
Copy link

zkq-java commented Aug 8, 2016

如何设置图片的缓存路径

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

@Dean1990
Copy link

Dean1990 commented Sep 13, 2016

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

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

@MhuiHugh
Copy link

MhuiHugh commented Oct 17, 2016

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

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

@zhangmanke
Copy link

zhangmanke commented Dec 8, 2016

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

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

@huangchengzuo
Copy link

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

@yangwengithub
Copy link

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

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

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

@mawanjin
Copy link

mawanjin commented Jan 19, 2018

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests