【发布时间】:2010-10-25 13:06:41
【问题描述】:
我目前正在尝试创建一个从 Internet 加载的图片库。
我使用的是标准 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);
}
}
问题是,非常随机但大约 10 次中有 8 次在我的日志中收到以下消息“10-25 14:58:18.764: DEBUG/skia(11294): --- decoder->decode returned false ",然后我的drawable为空。
我会说我的代码有问题,但为什么有时它会工作?或不?
我尝试将 WebViews 放在我的画廊中,只加载图像 URL,它的工作非常好,下载图片的速度非常快,但是显示非常混乱(速度较慢且没有响应,并且图像未居中在屏幕上...)。
我该怎么办?
我不明白为什么有时我的输入流不起作用。只有某些时候。如果足够努力(比如使用循环),它总是在几次尝试后工作,但这确实是一个丑陋的解决方案。
有没有办法下载带有 webviews 的图片并在之后获取它们?我尝试了类似的方法(使用 webview 中的 getCache() 或 capturePicture()),但没有显示任何内容......
有什么想法吗?有什么想法吗?
非常感谢!
编辑: 嗯.. 每次当我意识到 inputStream 的副本时它都在工作......但是为什么呢?
【问题讨论】:
标签: android download inputstream image