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

本文介绍了Java2增强的内存管理功能,通过引入SoftReference、WeakReference和PhantomReference引用类,与垃圾回收(GC)进行交互,提高内存使用效率。特别地,讨论了如何利用HashMap和SoftReference实现图片缓存,减少重复下载,优化应用性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值