谈谈Android下载图片的方法中SoftReference的使用

 1、Java2增强了内存管理功能,增加了java.lang.ref包,并在其中定义了三种引用类:SoftReference、WeakReference、PhantomReference;通过这些引用类与GC进行交互,以便改善GC的工作效率;其中,SoftReference的特点是具有较强的引用功能。一般只有在内存不够的情况下才进行此类内存的回收,因此,可以使用它来实现一些常用图片的缓存,实现Cache的功能;

2、当需要下载多张图片时,可以采用HashMap在实现Cache的功能。首先,定义:
HashMap<String , SoftReference<Drawable>> imgcache;
下载前首先判断imgcache中是否已经有某图片地址url的图片,如果有的话,则直接从imgcache中获取:
SoftReference<Drawable> sr = imgcache.get(url);
Drawable d = sr.get();
如果没有,则开始下载:
URL  m = new  URL(url);
InputStream i = (InputStream) m.getContent();
最后,Drawable d = Drawable.createFromStream(i,"src");
阅读更多
个人分类: Android
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭