android软引用如何使用方法,android使用软引用异步加载图片.docx

android 使用软引用异步加载图片

android 使用软引用异步加载图片

Java 代码

1234567891011121314151617181920212223242526272829303

132333435363738394041424344454647484950515253545556

575859606162636465666768697071727374757677787980818

283848586878889909192939495969798991001011021031041

0510610710810911011111211311411511611711811912012112

212312412512612712812913013113213313413513613713813

9140141142143package com.kjs.utils;import

java.io.IOException;import java.io.InputStream;import

java.lang.ref.SoftReference;import

.HttpURLConnection;import .URL;import

java.util.HashMap;import com.kjs.utils.CacheSD;import

android.annotation.SuppressLint;import

android.graphics.Bitmap;import

android.graphics.BitmapFactory;import

android.os.Handler;import android.os.Message;import

android.util.Log;@SuppressLint("HandlerLeak")public class

AsyncLoaderImage { private static String TAG = "AsyncLoaderImage"; private static HashMap

SoftReference> bitmapCache;

public

AsyncLoaderImage() {

if (bitmapCache == null)

{

bitmapCache = new HashMap

SoftReference>();

}

}

/**

* 先从软引用中获取图片未取到则从

SDCard 上取

*

* @param url

* @param imageCallback

*

@return

*/

public Bitmap loadBitmap(final String url,

final ImageCallback imageCallback) {

Bitmap bitmap;

/**

*

从软引用中获取图片

*/

if

(bitmapCache.containsKey(url))

{

SoftReference softReference =

bitmapCache.get(url);

bitmap =

softReference.get();

if (bitmap != null)

{

return bitmap;

}

}

/**

*

从 SD 卡中获取图片

*/

bitmap = CacheSD.getBitmap(Convert.getImageName(url));

if (bitmap != null) {

/**

*

取到后

放入软引用中

*/

bitmapCache.put(url, new

SoftReference(bitmap));return

bitmap;

}

final Handler handler = new

Handler() {

@Override

public void

handleMessage(Message msg)

{imageCallback.imageLoaded((Bitmap)

msg.obj, url);

}

};

/**

* 都未取到则开启线程下载图片

Thread() {@Override

run() {try {

bitmap = DownLoadBitmap(url);

*/

new

public void

Bitmap

if

(bitmap != null) {

/**

* 下载完成后入软引用中

*/

bitmapCache.put(url, ne

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值