Android - проблемы с загрузкой динамического изображения - PullRequest
0 голосов
/ 25 октября 2010

В настоящее время я пытаюсь создать галерею изображений, загруженных из Интернета.

Я использую стандартный объект "Галерея" с пользовательским адаптером и пользовательским 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 ... но почему?

1 Ответ

1 голос
/ 04 мая 2011

Это может быть еще одна ошибка в обработке потокового растрового изображения? Существует открытая проблема ( Проблема 10627: объект изображения не передает большие битовые карты ), где большие битовые карты не записываются в поток. И это может быть просто другая половина проблемы.

...