我在列表视图中遇到了类似的图像问题。此答案可能会纠正您的错误图像问题。
我刚刚使用UniversalImageLoader下载了示例项目,它表现出与您描述的相同的行为。
到目前为止,要注意一些源代码。
public static final int DEFAULT_THREAD_POOL_SIZE = 3;public static final int DEFAULT_THREAD_PRIORITY = Thread.NORM_PRIORITY - 1;public static final int DEFAULT_MEMORY_CACHE_SIZE = 2 * 1024 * 1024; // bytes
这表示在任何时候都将有三个线程下载,最大2MB的图像。您要下载的图片有多大?您还在缓存到磁盘吗?如果是这样,那将会很慢。
要在ImageLoader中配置一些基本选项,您将需要传递给displayImage:
DisplayImageOptions options = new DisplayImageOptions.Builder() .showStubImage(R.drawable.stub_image) .cacheInMemory() .cacheonDisc() .build();
我也希望您尝试以下选项:
ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(this) .enableLogging() .memoryCacheSize(41943040) .discCacheSize(104857600) .threadPoolSize(10) .build();imageLoader = ImageLoader.getInstance();imageLoader.init(imageLoaderConfiguration);
经过我的测试,图像在磁盘上,但是加载仍然很慢。
经过广泛的测试,我确定了主要问题是UniversalImageLoader速度很慢。具体来说,ImageLoader和LoadAndDisplayImageTask阻止了工作。我(很快)将LoadAndDisplayImageTask重写为AsyncTask,它立即表现更好。您可以在GitHub上下载代码的分支版本。
带有AsyncTasks的通用图像加载器
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)