В настоящее время я пытаюсь создать галерею изображений, загруженных из Интернета.
Я использую стандартный объект "Галерея" с пользовательским адаптером и пользовательским ImageView.Все работает довольно хорошо, ожидайте загрузки картинок.
Я использую асинхронную задачу для этого (у меня при загрузке отображаются эскизы).
Работает очень хорошо для загрузки эскизов, но на самом деле не для "больших" изображений (около 50К каждое).
Я использую это для загрузки картинок:
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 случаях из 10 я получил в своем журнале следующее сообщение «10-25 14: 58: 18.764: DEBUG / skia (11294): --- decoder-> decode return false», а затем мой выводимыйимеет значение null.
Я бы сказал, что проблема с моим кодом, но почему он иногда работает?или нет?
Я пытался поместить WebViews в мою галерею, загружая только URL-адрес изображения, и он очень хорошо и удивительно быстро загружает картинки, но затем дисплей довольно запутан (медленнее и не отзывчивее, и изображенияне центрированы на экране ...).
Что мне делать?
Я не понимаю, почему иногда мой входной поток не работает.Только иногда.Если попытаться достаточно усердно (например, с помощью цикла), он всегда работает после нескольких попыток, но это действительно уродливое решение.
Есть ли способ загрузить изображения с веб-просмотрами и получить их после?Я пробовал что-то подобное (с помощью getCache () или capturePicture () из веб-обзора), но ничего не показывалось ...
Есть мысли?Есть идеи?
Спасибо большое!
РЕДАКТИРОВАТЬ: Ну ... он работает каждый раз, когда я понимаю копию inputStream ... но почему?