我目前正在尝试创建一个从互联网加载的图片库。
我使用了一个标准的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放到我的图库中,只加载图片地址,下载图片的效果非常好,速度也快得令人惊叹,但随后显示就变得非常混乱(速度较慢,没有响应,图像没有居中显示……)。
我该怎么办?
我不明白为什么有时我的输入流不工作。只是有时候。如果足够努力(就像使用循环一样),它总是在几次尝试之后就能工作,但这确实是一个丑陋的解决方案。
有没有办法下载带有webviews的图片并在下载后获取它们?我尝试过类似的东西(在webview中使用getCache()或capturePicture() ),但它没有显示任何内容……
有什么想法吗?有什么想法吗?
非常感谢!
编辑:好吧..每次当我意识到inputStream的副本的时候它都能工作。但是为什么呢?
发布于 2011-05-04 09:36:51
这很可能是流位图处理中的另一个bug?存在一个未解决的问题(Issue 10627: Picture object not streaming out larger bitmaps),其中较大的位图没有写出到流中。而这可能只是问题的另一半。
https://stackoverflow.com/questions/4014807
复制相似问题