在App Launch上初始化ImageLoaders

时间:2016-02-08 18:13:54

标签: android image-loading

如何在应用程序启动时初始化图像加载器,以便我可以在我的应用程序中的任何地方使用它。我正在尝试使用凌空库。

 if (mImageLoader == null) {
        mImageLoader = new ImageLoader(this.mRequestQueue,
                new LruBitmapCache());
    }

2 个答案:

答案 0 :(得分:1)

我会创建一个单身人士。这是我发布的项目的一个例子:

public class VolleySingleton {

    private static Context mContext;
    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;

    private static VolleySingleton ourInstance;
    public static VolleySingleton getInstance(Context context) {
        if (ourInstance == null) {
            ourInstance = new VolleySingleton(context);
        }
        return ourInstance;
    }

    private VolleySingleton(Context context) {
        mContext=context;
        mRequestQueue = Volley.newRequestQueue(context.getApplicationContext());
        mImageLoader = new ImageLoader(mRequestQueue,
                new ImageLoader.ImageCache() {
                    private final LruCache<String, Bitmap>
                            cache = new LruCache<String, Bitmap>(20);
                    @Override
                    public Bitmap getBitmap(String url) {
                        return cache.get(url);
                    }
                    @Override
                    public void putBitmap(String url, Bitmap bitmap) {
                        cache.put(url, bitmap);
                    }
                });
    }

    public <T> void addToRequestQueue(Request<T> req) {
        mRequestQueue.add(req);
    }    

    public ImageLoader getImageLoader() {
        return mImageLoader;
    }
}

然后您可以使用以下语句获取图像加载器:

VolleySingleton.getInstance(this).getImageLoader();

答案 1 :(得分:0)

试试这个:

public class Application extends android.app.Application {

    @Override
    public void onCreate() {
        super.onCreate();

        DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .build();
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
                .defaultDisplayImageOptions(defaultOptions)
                .build();
        ImageLoader.getInstance().init(config);
    }
}