Ошибка при отображении изображения в режиме просмотра изображений - PullRequest
1 голос
/ 17 января 2011

Это заставило меня кусать ногти.Я проанализировал URL-адреса изображений из XML в массив. Я отображаю изображения в виде таблицы вместе с текстом.Я использую следующий код в действии для отображения изображения:

Растровое изображение bm = DownloadImage (piciterator.next (). ToString ());
icon.setImageBitmap (bm);

Здесь piciterator выполняет итерацию массива, содержащего URL-адреса.

Вот функция DownloadImage:

частный битмэп DownloadImage (String URL)
{

    Bitmap bitmap = null;
    InputStream in = null;  

    try {
        in = OpenHttpConnection(URL);

        bitmap = BitmapFactory.decodeStream(in);
        in.close();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    return bitmap;                
}

И это функция OpenHttpConnection:

private InputStream OpenHttpConnection (String urlString) выдает IOException

{
    InputStream in = null;
    int response = -1;

    URL url = new URL(urlString); 
    URLConnection conn = url.openConnection();

    if (!(conn instanceof HttpURLConnection))                     
        throw new IOException("Not an HTTP connection");

    try{
        HttpURLConnection httpConn = (HttpURLConnection) conn;
        httpConn.setAllowUserInteraction(false);
        httpConn.setInstanceFollowRedirects(true);
        httpConn.setRequestMethod("GET");
        httpConn.connect(); 

        response = httpConn.getResponseCode();                 
        if (response == HttpURLConnection.HTTP_OK) {
            in = httpConn.getInputStream();                                 
        }                     
    }
    catch (Exception ex)
    {
        throw new IOException("Error connecting");            
    }
    return in;     
}  

При отладке я могу получить некоторые изображения в браузере.Однако после 23-го элемента в arraylist изображение открывается в браузере, но приложение падает на шаг:

bitmap = BitmapFactory.decodeStream (in);

На изображении при просмотре наБраузер сравнительно меньше других, но не намного меньше.

Приложение даже не пытается попробовать catch.Это просто вылетает.

Помощь в этом отношении будет действительно ценной.

Ответы [ 2 ]

1 голос
/ 17 января 2011

Тот факт, что происходит сбой без печати трассировки стека, указывает на потенциальную проблему нехватки памяти.

IIRC, приложения Android ограничены 16 МБ. Вы проверили, превышает ли совокупный размер изображений этот предел?

0 голосов
/ 17 января 2011

Всегда старайтесь использовать Thread в сетевом соединении.

Вот документ.

Безболезненный шаг

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...