这个让我咬了我的指甲。 我将图像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);
在浏览器上看到的图像比其他图像小,但不会小得多。
该应用程序甚至不去尝试捕获。它只是崩溃了。
在这方面的帮助将非常适合。
答案 0 :(得分:1)
事实上它只是在没有打印堆栈跟踪的情况下崩溃,暗示了潜在的内存不足问题。
IIRC,Android应用程序限制为16MB。您是否验证了图片的总大小是否超过此限制?
答案 1 :(得分:0)