2 jkingcl JKINGCL 于 2012.11.26 17:10 提问

android异步获取图片并且本地存储的后续问题

我已经实现了头像图片的异步加载以及头像图片的下载及本地保存。
实现方法及源代码请见我的博文:图片的异步加载及图片本地缓存

现在出现了一个后续的问题由于是头像,所以我使用了用户的ID作为头像的名称,例如现在我有3个好友分别是user1,user2,user3,以及我自己myUser.
那么第一次读取过后我本地的头像就为user1.jpg,user2.jpg,user3.jpg,myUser.jpg.
好了问题来了,当我的好友们的头像发生变化的时候,我去读取的时候首先检查的是本地是否有这样图片,那么本地是有图片的,则不会去服务器下载了,但是就没有办法获取到最新的头像了。
当然在我的app里面有清除本地缓存的功能,但是不可能因为一个人头像变化就把所有的头像图片资源全部清除了吧。
不知道有没有什么好的建议和方法呢?
我现在的思路有如下:
1.定时从服务器获取一次头像,比如1天2天或者一周什么的,虽然即时性不高,但是头像更改的频率一般的用户也不会太高。
2.服务器端加头像有更改的状态字段,那么当头像有更改的时候将该状态设置一下,但是因为头像都是跟着其他数据已XML的方式发送过来的,许多涉及到头像的地方那么都要加这一个统一的字段。同时我的方法里面也需要添加代码进行这个字段的判断检查,然后对应的重现下载图片。这样会在服务器和客户端都进行修改比较麻烦一点。

以上就是我的一些思路,不过感觉都还不是很好一样,请有经验的朋友如果好的建议和方法的请支点招,谢谢,说说解决方案就都行!欢迎交流~

3个回答

Kill_it
Kill_it   2012.11.27 13:04
已采纳

你可以这样,写一个userbean,这个bean中有id和iconurl,所以这个id和url是对应的,当用户的icon更新后,他的url需要变,但是id不变,你每次请求到数据后通过这个iconurl去找缓存,你的icon缓存需要用url最为标示,如果url能找到缓存,就不用在从新加载图片,如果url找不到缓存,就从新去加载图片。

Kill_it
Kill_it 不客气,如果你觉得答案有用就采纳吧
大约 5 年之前 回复
JKINGCL
JKINGCL 恩,谢谢!也只能这样每次都把URL地址从服务器取回来,然后对比了!
大约 5 年之前 回复
znl_12
znl_12   2012.11.27 17:33

其实这个你需要有一个更新列表的,就是你每次都是要去更新你的列表的,而你的数据库需要保存的就是你的更新时间。

JKINGCL
JKINGCL 恩,再结合楼上的做法就可以了!谢谢
大约 5 年之前 回复
CSDN_Ask
CSDN_Ask   2012.11.29 11:06

我不清楚你们服务器的实现方案,是不是人换了头像之后,头像的地址也不变的。之前我的处理方式是将头像的地址base64后作为文件名,因为我们服务器改了地址后头像的url地址是会变化的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!