在imageview中显示图像时出错

时间:2011-01-17 11:02:31

标签: android imageview

这个让我咬了我的指甲。 我将图像URL从XML解析为arraylist。我在表格布局中显示图像以及一些文本。我在活动中使用以下代码来显示图像:

位图bm = DownloadImage(piciterator.next()。toString());
icon.setImageBitmap(BM);

这里piciterator正在迭代包含URL的arraylist。

这是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;     
}  

在调试时,我能够在浏览器上检索一些图像。但是,在arraylist中的第23个元素之后,图像在浏览器上打开,但是应用程序落在了步骤:

bitmap = BitmapFactory.decodeStream(in);

在浏览器上看到的图像比其他图像小,但不会小得多。

该应用程序甚至不去尝试捕获。它只是崩溃了。

在这方面的帮助将非常适合。

2 个答案:

答案 0 :(得分:1)

事实上它只是在没有打印堆栈跟踪的情况下崩溃,暗示了潜在的内存不足问题。

IIRC,Android应用程序限制为16MB。您是否验证了图片的总大小是否超过此限制?

答案 1 :(得分:0)

始终尝试在网络连接中使用Thread

这是文档。

Painless Treading