Android图片加载问题
图片处理一直是Android程序员需要注意的地方,在移动设备上内存资源有限的条件下,图片的加载很容易出现个OOM异常和应用的流畅性问题。
现在也有很流行的开源框架实现了图片的异步加载和二级缓存的机制,不能重复造轮子,但是为了造更好的轮子我们应该知道轮子是怎么制造的。
先看代码
核心类:ImageLoader
package com.example.zfy.imageloader.ImageLoader;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.SystemClock;
import android.util.Log;
import java.io.IOException;
import java.lang.ref.SoftReference;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by zfy on 2016/7/21.
*/
public class ImageLoader {
//设置缓存
//软引用避免OOM异常
public Map<String ,SoftReference<Drawable>> imageCache = new HashMap<String,SoftReference<Drawable>>();
//线程池管理图片异步加载的线程
private ExecutorService executorService = Executors.newFixedThreadPool(5);
private Handler mHandler = new Handler();
//模拟网络延迟用的标记,请忽略
private boolean isFirst = true;
//加载图片的主要方法
public Drawable loadDrawable(