我目前正在尝试创建从互联网上加载的图片库。
我正在使用标准的Gallery对象,带有自定义适配器和自定义ImageView。一切都工作得很好,期待下载图片。
我正在使用异步任务来执行此操作(我在加载时显示缩略图)。
加载缩略图非常有用,但不适用于“大”图像(每张约50k)。
我正在使用它来加载图片:
private class DownloadImageTask extends AsyncTask<String,Void,Drawable>{
@Override
protected Drawable doInBackground(String... arg0) {
URL url;
InputStream is;
Drawable d=null;
try {
url = new URL(arg0[0]);
is = (InputStream) url.getContent();
d = Drawable.createFromStream(is, "src");
return d;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Drawable result) {
setImage(result);
}
}
问题是,相当随机但是大约8次中的8次,我在我的日志中得到以下消息“10-25 14:58:18.764:DEBUG / skia(11294):--- decoder-&gt; decode返回false“,然后我的drawable为null。
我说我的代码存在问题,但为什么它有时会运行?或不?
我试图将WebViews放在我的图库中,只加载图片网址,并且下载图片时效果非常好,而且显示速度非常快(但是显示非常混乱(速度慢且无响应,图像不居中)在屏幕上...)。
我该怎么办?
我不明白为什么有时我的输入流不起作用。只是有时。如果尝试得足够努力(比如循环),它总会在几次尝试后起作用,但它确实是一个丑陋的解决方案。
有没有办法下载带有网页浏览的图片并在之后获取它们?我尝试了类似的东西(使用webview中的getCache()或capturePicture()),但它没有显示任何内容......
有什么想法?有什么想法吗?
非常感谢!
编辑: 嗯......每次当我意识到inputStream的副本时它都在工作......但为什么呢?
答案 0 :(得分:1)
这可能是流位图处理中的另一个错误?存在一个未解决的问题(Issue 10627: Picture object not streaming out larger bitmaps),其中较大的位图未写入流。这可能只是问题的另一半。