Android - 在静态中使用通用图像加载器 class

Android - Using Universal Image Loader in static class

我可以在静态 class 中使用 Universal Image Loader 库吗?意味着创建一个图像加载器实例并将其修改为静态。

在不同的多个片段和 classes 中使用此库的最佳方法是什么?如何改进缓存功能?

ImageLoader.getInstance(); // Get singleton instance 上面的行将提供一个单例。你可以调用它然后执行你的加载 作为 doc shows there is a sample project,您可以从 github 下载。这个示例项目展示了如何正确使用这个库

我推荐你使用 Glide 一个非常好的图像加载器库,我自己已经尝试过并且很高兴使用它。

这是您需要阅读和实施的内容,以实现图像缓存和有效使用 lib

https://futurestud.io/tutorials/glide-getting-started

官方link https://github.com/bumptech/glide

使用 Universal Image Loader 的最佳方式是在您的应用程序启动时创建一个实例,然后在整个应用程序中获取该实例

这是应用class

 public class App extends Application {

    public ImageLoader imageLoader;

    public ImageLoader getImageLoader() {
        return imageLoader;
    }

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

        // UNIVERSAL IMAGE LOADER SETUP
        DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
                .resetViewBeforeLoading(true)
                .cacheOnDisk(true)
                .cacheInMemory(true)
                .displayer(new FadeInBitmapDisplayer(300))
                .build();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
                .defaultDisplayImageOptions(defaultOptions)
                .memoryCache(new WeakMemoryCache())
                .diskCacheSize(100 * 1024 * 1024)
                .build();

        this.imageLoader = ImageLoader.getInstance();
        imageLoader.init(config);

        // END - UNIVERSAL IMAGE LOADER SETUP
    }
}

确保 AndroidManifest.xml 中的应用程序标签具有 android:name=.App” 属性

获取实例,在Activity

ImageLoader imageLoader = ((App)getApplicationContext()).getImageLoader();

外面Activity

ImageLoader imageLoader = ((App)context.getApplicationContext()).getImageLoader();

您可以参考this博客。