我的查询不是UniversalImageLoader,而是因为我正在尝试使用内容流来加载我面临的问题。
我正在使用输入流" stream://"能够使用ImageLoader。一切正常,但同一请求的输入流的哈希码生成方式不同,因此迫使图像加载器再次从网络而不是磁盘下载图像。
我该怎么做才能解决它。
PS:我试图按照here
的回答获取InputStream的代码是(The UtilityMethod只是一个异步任务):
public void displayContentImage(final String fileId, final ImageView imageView) {
UtilityMethods.startMyTask(new AsyncTask<Object, Void, InputStream>() {
@Override
protected InputStream doInBackground(Object... params) {
CMServiceGateway cmServiceGateway = new CMServiceGateway();
final InputStream inputStream = cmServiceGateway.GetContentAsStream(fileId);
if (inputStream != null) {
//String imageId = "stream://" + inputStream.hashCode();
//Log.d("ImageId :: 1 ::", "file id : " + fileId + "hashcode: " + imageId);
//String imageId2 = "stream://" + cmServiceGateway.GetContentAsStream(fileId).hashCode();
//Log.d("ImageId :: 2 ::", "file id : " + fileId + "hashcode: " + imageId2);
return inputStream;
}
return null;
}
@Override
protected void onPostExecute(InputStream inputStream) {
if (inputStream != null) {
displayImage(inputStream, imageView);
}
}
});
}
答案 0 :(得分:1)
哈希码的基本问题与上面的示例相同,您会发现第二个日志哈希码与第一个日志哈希码不同,即使使用的inputStream对象是相同的。
//String imageId = "stream://" + inputStream.hashCode();
//Log.d("ImageId :: 1 ::", "file id : " + fileId + "hashcode: " + imageId);
//String imageId2 = "stream://" + cmServiceGateway.GetContentAsStream(fileId).hashCode();
//Log.d("ImageId :: 2 ::", "file id : " + fileId + "hashcode: " + imageId2);
虽然没有完全回答上述问题但我能够通过不将哈希码作为id传递给通用图像加载器来解决这个问题。相反,我传递了唯一的文件ID,现在它可以很好地显示内存缓存中的图像。