首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android:在远程服务器更新图片后,imageview仍然显示旧图片

Android中,当远程服务器更新图片后,ImageView仍然显示旧图片的原因可能是缓存导致的。Android中的ImageView通常会使用缓存来提高性能和加载速度。为了解决这个问题,可以尝试以下几种方法:

  1. 清除缓存:可以通过调用ImageView的setImageDrawable(null)或setImageBitmap(null)方法来清除缓存,然后再重新加载图片。这样可以确保ImageView重新从服务器获取最新的图片。
  2. 使用缓存控制策略:可以使用一些缓存控制策略来确保ImageView获取最新的图片。例如,可以使用HTTP头部的Cache-Control字段来控制缓存的行为。通过设置Cache-Control为no-cache或max-age=0,可以告诉客户端不使用缓存,每次都从服务器获取最新的图片。
  3. 使用版本号或时间戳:在远程服务器更新图片时,可以在图片的URL中添加一个版本号或时间戳参数。每次更新图片时,修改版本号或时间戳,这样可以确保每次请求的URL都是唯一的,从而避免缓存的影响。
  4. 使用图片加载库:可以使用一些成熟的图片加载库,如Glide、Picasso等。这些库通常提供了更灵活的缓存控制选项,可以根据需要来加载最新的图片。

总结起来,解决Android中远程服务器更新图片后ImageView仍然显示旧图片的问题,可以通过清除缓存、使用缓存控制策略、使用版本号或时间戳、使用图片加载库等方法来确保ImageView获取最新的图片。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android在ImageView上直接显示网络图片

ImageView中,没有一个方法是可以直接显示网络的图片的,当我们经常需要显示网络图片时,每次都有一大堆的操作,这会很麻烦,今天就教大家在ImageView上轻松显示网络图片。...ImageView,要使用MyImageView,要把刚才重写的一个MyImageView的全路径写上 <Button android:text="加载网络图片" android...压缩 这是比较简单的从网络获取照片,直接在ImageView上显示,但是你有没有考虑过如果网络的图片很大,已经超出了手机屏幕的大小,如果还是加载原图的话无疑是浪费内存,还有可能造成内存溢出...首先获取ImageView要显示的宽度和高度 /** * 获取ImageView实际的宽度 * @return 返回ImageView实际的宽度 */ public...最后是into()方法,就是把我们要显示的ImageView加载进去,那就大功告成了。

6.2K40
  • (转载非原创)Android系统Bitmap内存分配原理与优化

    拿钢铁侠这张图片举例,它的尺寸是350*350,可以看到在电脑磁盘上,它只占36KB的空间。 我们创建一个简单的Demo,页面正中央是一个ImageView,用于显示这张钢铁侠图片。...然后用GIMP工具打开该文件,在格式那里选择RGBA(大部分Bitmap都使用这种格式),宽与高可以在MAT中看到,笔者这里是800 * 800。设置好格式和宽高后,就可以看到图片的真实面目了。...仍然以这张钢铁侠为例,图片本身是350px * 350px,当我们把它加载到200px * 200px的ImageView当中时,占用空间是0.49MB。...Picasso().get().load(IMAGE_URL).fit().into(imageVIEW) 相反场景:小图加载到大ImageView中 通常为了提供更清晰的界面,防止图片拉伸后失真模糊,...在布局里创建两个ImageView,观察这两张图片最终的显示效果,以及分配内存情况。

    69620

    基于Android开发的天气预报app(源码下载)「建议收藏」

    主要实现了: 1、定位城市天气显示; 2、城市编辑功能(增、删、改、查)以及对应天气显示信息的改变; 3、天气信息的Widget窗口显示(城市的编辑功能可以远程的更新Widget窗口信息的显示)...建议在官网下载,因为国内很多映射文件多少都是有点年代的,还是下载最新的比较好,也免去更新的麻烦。不过国内由于网络限制,上Android官网需要访问国外。...二、 系统设计分析 1、天气信息界面显示设计 首先先上效果图: 接下来我介绍一下天气显示信息中用到的一些设计: 首先是功能实现上的: 1)首先背景图片是每天会更新的,是从必应网上获取到的背景图片...#城市和天气信息显示模块 3、天气信息的显示 这里相对麻烦一点,因为天气信息的显示中我们做了比较多的功能 获取背景图片和图片的更新 这里我使用的是必应主页提供的背景图片作为天气信息显示的背景图片http...创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取、大小调整和展示。

    3.3K10

    Android训练课程(Android Training) - 高效的显示图片

    Android应用的UI 需要即时地加载多个位图。像ListView,GridView 和 ViewPager 组件 通常包含多个位图在屏幕上,更多可能性在关闭屏幕时,使用手指拨动,立即准备去显示。...一个更高分辨率的图片不能提供更多可见的好处,但是仍然占据珍贵的内存空间,和由于额外的缩放而导致额外的性能开销。...下面是一些考虑的因素: 估计记载整个图片到内存后的内存占用(使用)量 基于你的应用的其他内存需要, 你愿意的分配给的 加载图片的内存占用量 目标 ImageView 的尺寸 或者 你要加载到显示用的...在这种方式中,一个 BitmapDrawable 被用于作为一个图象占位符,在任务完成后,它能够被显示在 ImageView中: static class AsyncDrawable extends BitmapDrawable...在很多情形下(比如ListView, GridView 或 ViewPager),屏幕上的图像总数,结合那些不久后滚动后显示再屏幕的图片,根本就是无限的。

    2.9K00

    Android 内存缓存:手把手教你学会LrhCache算法

    屏幕上需要一次性显示多少张图片和多少图片在等待显示 // c. 手机的大小和密度是多少(密度越高的设备需要越大的 缓存) // d....保存图片的质量(不同像素的在不同情况下显示) final int cacheSize = maxMemory / 8; // 3....当 ImageView 加载图片时,会先在LruCache中看有没有缓存该图片:若有,则直接获取 mMemoryCache.get(key); ---- 5....6.2 获取缓存:get() 作用:获取缓存 & 更新队列 当调用 get() 获取缓存对象时,就代表访问了1次该元素 访问后将会更新队列,使得整个队列是按照 访问顺序 排列 示意图如下 ?...上述更新过程是在 get()中完成 源码分析 /** * 使用函数(以加载图片为例) **/ mMemoryCache.get(key); /** * 源码分析 **/

    92320

    Android内存缓存:手把手教你学会LrhCache算法

    前言 内存缓存知识在Android开发中实现重要 本文将全面介绍内存缓存的所有相关知识(含LrhCache算法、其原理等),希望您们会喜欢 目录 1....屏幕上需要一次性显示多少张图片和多少图片在等待显示 // c. 手机的大小和密度是多少(密度越高的设备需要越大的 缓存) // d....保存图片的质量(不同像素的在不同情况下显示) final int cacheSize = maxMemory / 8; // 3....当 ImageView 加载图片时,会先在LruCache中看有没有缓存该图片:若有,则直接获取 mMemoryCache.get(key); 5....6.2 获取缓存:get() 作用:获取缓存 & 更新队列 当调用 get() 获取缓存对象时,就代表访问了1次该元素 访问后将会更新队列,使得整个队列是按照 访问顺序 排列 示意图如下 上述更新过程是在

    44240

    看到如此多的MVP+Dagger2+Retrofit+Rxjava项目,轻松拿star,心动了吗?

    错误处理, 错误后自动重试, 捕捉整个应用的所有错误 全局 UI 自适应 图片加载类 ImageLoader 使用策略模式和建造者模式, 轻松切换图片加载框架, 方便功能扩展 网络请求日志打印封装(提供解析后的服务器的请求信息和服务器的响应信息...git fetch arms拉取远程仓库最新的版本 git merge arms/master --allow-unrelated-histories合并远程仓库到当前分支 后面如果本框架有更新就只用重复...中的大部分的作用为通过从Model层接口获取数据,在调用View层接口显示数据,首先实现BasePresenter,指定Model和View的范型,注意一定要指定Contract中定义的接口,Presenter...字段,内部根据这个字段 if|else,其他操作同理,当需要切换图片请求框架或图片请求框架升级后变更了 Api 时,这里可以将影响范围降到最低,所以封装 ImageLoader 是为了屏蔽这个风险)...Activity(未调用onPause),AppManager封装有多种方法,可以很方便的对它们进行操作,也可以在未持有AppManager的情况下,通过EventBus远程遥控它的所有方法,这样我们可以在整个

    2.9K30

    Carson带你学Android:最全面解析图片加载库Glide用法

    .asBitmap()//显示gif静态图片 .asGif();//显示gif动态图片 .into(imageView); 2.2.3 关于缓存 设置磁盘缓存策略 Glide.with...:不缓存任何图片,即禁用磁盘缓存 // DiskCacheStrategy.ALL :缓存原始图片 & 转换后的图片(默认) // DiskCacheStrategy.SOURCE:只缓存原始图片(原来的全分辨率的图像...,即不缓存转换后的图片) // DiskCacheStrategy.RESULT:只缓存转换后的图片(即最终的图像:降低分辨率后 / 或者转换后 ,不缓存原始图片 设置跳过内存缓存 Glide .with...Glide 将会仍然利用磁盘缓存来避免重复的网络请求。...步骤3:在MainActivity中 ImageView targetImageView = (ImageView) findViewById(R.id.ImageView); String

    88020

    【Android从零单排系列九】《Android视图控件——ImageView》

    一.ImageView基本介绍  在 Android 应用开发中,我们通常使用 ImageView 来显示图片。...scaleType fitStart:保持宽高比例缩放图片,直到较长的边与image的边长相等,缩放完成后将图片放在ImageView的左上角 fitCenter:默认值,同上,缩放后放中间 fitEnd...:同上,缩放后放右下角 fitXY:对图像横纵方向进行独立缩放,使得该图片安全适应imageview,但图片宽高比可能发生改变 center:保持原图大小,显示在中心,当原图大小大于imageview大小...http的缓存很好的结合,完全是自己的一套缓存机制 Picasso 使用方便,一行代码完成加载图片显示,框架体积小 缺点在于不支持GIF,并且他可能是想让服务器去处理图片的缩放,他缓存的图片是未缩放的,...2.渐进式加载JPEG图片,支持图片从模糊到清晰加载 3.图片可以以任意的中心店显示在ImageView,而不仅仅是图片的中心 4.JPEG图片改变大小也是在native进行的,不是在虚拟机的堆内存,同样减少

    1.3K30

    Android系统Bitmap内存分配原理与优化

    拿钢铁侠这张图片举例,它的尺寸是350*350,可以看到在电脑磁盘上,它只占36KB的空间。 我们创建一个简单的Demo,页面正中央是一个ImageView,用于显示这张钢铁侠图片。...然后用GIMP工具打开该文件,在格式那里选择RGBA(大部分Bitmap都使用这种格式),宽与高可以在MAT中看到,笔者这里是800 * 800。设置好格式和宽高后,就可以看到图片的真实面目了。...仍然以这张钢铁侠为例,图片本身是350px * 350px,当我们把它加载到200px * 200px的ImageView当中时,占用空间是0.49MB。...Picasso().get().load(IMAGE_URL).fit().into(imageVIEW) 相反场景:小图加载到大ImageView中 通常为了提供更清晰的界面,防止图片拉伸后失真模糊,...在布局里创建两个ImageView,观察这两张图片最终的显示效果,以及分配内存情况。

    1.2K20

    Android网络 | URL和URLConnection详解及其实战案例

    (4)远程资源变为可用, 程序可以访问远程资源的头字段或通过输入流 读取远程资源的数据。 在建立和远程资源的实际连接之前, 可以通过如下方法来设置请求头字段。...案例1:在Android手机屏幕中显示网络中的图片 在日常应用中, 我们经常不需要将网络中的图片 保存到手机中, 而只是在网络浏览一下即可。...主要思路是: 在子线程中进行网络请求, 具体的网络请求操作如上所述 (这里用的是 HttpURLConnection去连接远程资源, 实际开发中可以尝试集成第三方库), 请求成功后 把得到的资源在子线程编码...:text="获取网络上的图片" /> ImageView android:id="@+id/myImageView1" android:layout_width..." android:text="http://www.baidu.com/img/baidu_sylogo1.gif" android:hint="请输入图片地址" />

    1.7K40

    Glide 如何实现正确加载图片而没有错位

    .into(imageView); 当我们在常见的列表界面中(如 recycleview 实现的列表),使用上面的代码,在我们快速滑动中,glide 是如何实现正确加载图片,而没有导致图片内容的错位或者是不正确呢...要达到这样的效果,简而言之,就是要执行上面的代码后,glide 要把最新的图片加载到正确的对象上,而取消对象之前关联的图片加载请求。 我们首先从 into() 这个方法进行分析。...} on the view using {@link * android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable...旧的 Request 被 clear 后,又是如何让资源没有去加载到关联的 Target 上的?...当顺利加载成功后便回调到 Target 对象上,触发 target.onResourceReady(result, animation) 方法,图片便被正确显示出来了。 实际上,还是有很多细节流程。

    1.8K30
    领券