【发布时间】:2016-09-22 16:57:14
【问题描述】:
我可以在静态类中使用通用图像加载器库吗?意思是创建一个图像加载器实例并将其修改为静态。
在不同的多个片段和类中使用这个库的最佳方法是什么?如何改进缓存功能?
【问题讨论】:
标签: android android-image universal-image-loader
我可以在静态类中使用通用图像加载器库吗?意思是创建一个图像加载器实例并将其修改为静态。
在不同的多个片段和类中使用这个库的最佳方法是什么?如何改进缓存功能?
【问题讨论】:
标签: android android-image universal-image-loader
ImageLoader.getInstance(); // Get singleton instance
上面的行将提供一个单例。你可以调用它然后执行你的加载
正如doc 所示,有一个sample project,您可以从github 下载。这个示例项目展示了如何正确使用这个库
【讨论】:
使用 Universal Image Loader 的最佳方式是在您的应用启动时创建一个实例,然后在整个应用中获取该实例
这里是 App 类
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();
外部活动
ImageLoader imageLoader = ((App)context.getApplicationContext()).getImageLoader();
您可以参考this博客。
【讨论】:
我推荐你使用 Glide 一个非常不错的图像加载器库,我自己已经尝试过并且很高兴使用它。
这是您需要阅读和实现图像缓存和高效使用 lib 的内容
【讨论】: